2018 年 05 月 22 日
JS中一些判别从属的操作符
var myObject={a:2}
in操作符检查属性a是否在对象myObject及其[[Prototype]]原型链中
in操作符检查容器的时候,检查的是某个属性名是否存在而不是是否有某个值
hasOwnProperty只会检查a属性是否存在myObject对象中,不会检查[[Prototype]]原型链
function Foo(){}
var a=new Foo();
Instanceof回答的是,在整条[[Prototype]]原型链中是否有指向Foo.Prototype的对象
这个instanceof只能处理对象a和函数(带.Prototype引用的Foo)之间的关系,只用instanceof无法实现,而需要下面的方法:
b.isPrototypeOf(c)
这里判别的就是b是否出现在c的[[Prototype]]原型链中?这的c的prototype属性会自动被访问
我们也可以这样直接获取一个对象的[[Prototype]]原型链
Object.getPrototypeOf(a);
Object.getPrototypeOf(a)===Foo.prototype
//true
大多数浏览器也支持一种非标准的方法来访问内部prototype属性:
a.__proto__===Foo.prototype;
//true
注意事项两条下划线