hasOwnProperty()&&isPrototypeOf()

1、hasOwnProperty()

hasOwnProperty()函数用于指示一个对象自身(不包括原型链)是否具有指定名称的属性。如果有,返回true,否则返回false

该方法属于Object对象,由于所有的对象都"继承"了Object的对象实例,因此几乎所有的实例对象都可以使用该方法。

IE 5.5+、FireFox、Chrome、Safari、Opera等主流浏览器均支持该函数。

语法:

object.hasOwnProperty(propertyName)

参数:

参数 描述
propertyName String类型指定的属性名称

返回值:

hasOwnProperty()函数的返回值为Boolean类型。如果对象object具有名称为propertyName的属性,则返回true,否则返回false

此方法不会检查对象的原型链中是否存在该属性,该属性只有是对象本身的一个成员才会返回true

 1 function Site(){
 2     this.name = "CodePlayer";
 3     this.url = "http://www.365mini.com/";
 4
 5     this.sayHello = function(){
 6         document.writeln("欢迎来到" + this.name);
 7     };
 8 }
 9
10 var obj = {
11     engine: "PHP"
12     ,sayHi: function(){
13         document.writeln("欢迎访问" + this.url);
14     }
15 };
16 // 使用对象obj覆盖Site本身的prototype属性
17 Site.prototype = obj;
18
19 var s =  new Site();
20 document.writeln( s.hasOwnProperty("name") ); // true
21 document.writeln( s.hasOwnProperty("sayHello") ); // true
22 // 以下属性继承自原型链,因此为false
23 document.writeln( s.hasOwnProperty("engine") ); // false
24 document.writeln( s.hasOwnProperty("sayHi") ); // false
25 document.writeln( s.hasOwnProperty("toString") ); // false
26
27 // 想要查看对象(包括原型链)是否具备指定的属性,可以使用in操作符
28 document.writeln( "engine" in s ); // true
29 document.writeln( "sayHi" in s ); // true
30 document.writeln( "toString" in s ); // true

2、isPrototypeOf()

isPrototypeOf()函数用于指示对象是否存在于另一个对象的原型链中。如果存在,返回true,否则返回false

该方法属于Object对象,由于所有的对象都"继承"了Object的对象实例,因此几乎所有的实例对象都可以使用该方法。

IE 5.5+、FireFox、Chrome、Safari、Opera等主流浏览器均支持该函数。

语法:

prototypeObject.isPrototypeOf( object )

参数:

参数 描述
object Object类型一个对象,将对其原型链进行检查

返回值:

isPrototypeOf()函数的返回值为Boolean类型。如果object当前的原型链中存在prototypeObject对象,则isPrototypeOf()方法返回true。原型链用于在同一个对象类型的不同实例之间共享功能。如果object不是对象,或者prototypeObject对象不出现在object的原型链中,则该方法返回false


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

function Site(){

    this.name = "CodePlayer";

    this.url = "http://www.365mini.com/";

    this.sayHello = function(){

        document.writeln("欢迎来到" this.name);

    };

}

var s =  new Site();

document.writeln( Site.prototype.isPrototypeOf(s) ); // true

var obj = {

    engine: "PHP"

    ,sayHi: function(){

        document.writeln("欢迎访问" this.url);

    }

};

// 使用对象obj覆盖Site本身的prototype属性

Site.prototype = obj;

var s2 =  new Site();

document.writeln( obj.isPrototypeOf(s2) ); // true

  公共示例:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

function siteAdmin(nickName, siteName) {

            this.nickName = nickName;

            this.siteName = siteName;

        }

        siteAdmin.prototype.showAdmin = function () {

            alert(this.nickName + "是" this.siteName + "的站长!");

        };

        siteAdmin.prototype.showSite = function (siteUrl) {

            this.siteUrl = siteUrl;

            return this.siteName + "的地址是" this.siteUrl;

        };

        var matou = new siteAdmin("愚人码头""WEB前端开发");

        var matou2 = new siteAdmin("愚人码头""WEB前端开发");

        matou.age = "30";

        alert(matou.hasOwnProperty("nickName"));//true

        alert(matou.hasOwnProperty("age"));//true

        alert(matou.hasOwnProperty("showAdmin"));//false

        alert(matou.hasOwnProperty("siteUrl"));//false

        alert(siteAdmin.prototype.hasOwnProperty("showAdmin"));//true

        alert(siteAdmin.prototype.hasOwnProperty("siteUrl"));//false

        alert(siteAdmin.prototype.isPrototypeOf(matou));//true

        alert(siteAdmin.prototype.isPrototypeOf(matou2));//true

  

 
时间: 2024-10-12 20:54:29

hasOwnProperty()&&isPrototypeOf()的相关文章

js原型链接(二)

原型链的内部执行方式 <script> function Myclass(){ this.x=" x in Myclass"; } var obj=new Myclass(); p(obj.x); p(obj.z); //undefined Myclass.prototype.z="z in Myclass"; p(obj.z); //首先查找自身属性,如果没有找到 将沿着原型链接 查找构造函数(Myclass)的prototype对象里找 </s

原生javascript对象的方法

create Object.create() 方法创建一个拥有指定原型和若干个指定属性的对象. Object.create(proto [, propertiesObject ]) proto 为新创建对象的原型对象,设置为null可创建没有原型的空对象. propertiesObject 包涵若干个属性的描述符和defineProperties的第二个参数一样. Object.create(Object.prototype, { a: { value: 1, writable: true, c

javascript跳跃式前进(1) - 基本概念

前言 javascript 是弱类型语言,比较接近python和perl这类,不如java和c那样严格.所以写惯了强类型语言的小伙伴看到有些另类的写法也相当正常; 有些东东不精讲..以后单独脱离出来细讲; 要点提取: 语法 区分大小写[非常重要哦,比如True和False就不是布尔值了,而是标示符] 和强类型基本大同小异,以强类型的命名风格基本没什么错误;推荐驼峰大小写 注释有单行和多行注释 严格模式,速度运行是最快的;但是相当多的东西给限制了 语句以分号结尾,支持多变量定义[逗号隔开],在语句

理解Javascript_11_constructor实现原理 【转】

在理解了'对象模型'后,我们就可以看一下constructor属性是如何实现的. constructor是什么 简单的理解,constructor指的就是对象的构造函数.请看如下示例: 1 2 3 4 5 6 function Foo(){}; var foo = new Foo(); alert(foo.constructor);//Foo alert(Foo.constructor);//Function alert(Object.constructor);//Function alert(

Javascript中prototype属性的详解

原文链接:http://www.cnblogs.com/Uncle-Keith/p/5834289.html 在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象就是类的实例.但是在Javascript语言体系中,是不存在类(Class)的概念的,javascript中不是基于‘类的’,而是通过构造函数(constructor)和原型链(prototype chains)实现的.但是在ES6中提供了更接近传统语言的写法,引入了Class(类)这个概念,作为对

Object.prototype 与 Function.prototype 与 instanceof 运算符

方法: hasOwnProperty isPrototypeOf propertyIsEnumerable hasOwnProperty 该方法用来判断一个对象中的某一个属性是否是自己提供的( 住要用在判断属性是原型继承的还是自己提供的 ) 语法: 对象.hasOwnProperty( '属性名' ) -> boolean isPrototypeOf 凡是看到 of 翻译成 的, 反过来翻译: prototype of obj, 翻译成 obj 的 原型 因此该方法的含义是: xxx 是 xxx

What does enumerable mean?

I was directed to MDN's for..in page when it said, "for..in Iterates over the enumerable properties of an object." Then I went to the Enumerability and ownership of properties page where it said "Enumerable properties are those which can be

[Node.js]REPL(交互式解释器)

摘要 REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境,类似 Window 系统的终端或 Unix/Linux shell,我们可以在终端中输入命令,并接收系统的响应. Node交互解释器 node自带的交互解释器可以完成以下任务: 读取:读取用户输入,解析输了js数据结构并存储在内存中. 执行:执行输入的数据结构. 打印:输出结果. 循环:循环操作以上步骤知道用户两次按下ctrl+c按钮退出. windows启动node交互解析器 如上图,在> 后面就可以

对象继承其他对象的方法和属性

顶一个扩展函数,用来将第二个参数及以后的属性.方法拷贝给第一个函数: <script> // var extend=(function(){}()); 这是格式 var extend=(function(){ var p; var result=p in {toString:null}; if(result){ //检测p是否存在toString属性,这是一个检测 看是否可以可枚举 所以用toString这个为代表 return function extend(o){ for(var i=1;