a instanceof B; instanceof检测对象a的原型链中有没有构造函数B.prototype 如下: function In (a, B) { var p = a.__proto__; if (p != null ) { if(p == B.prototype) { return true; } p = p.__proto__; } return false; }…
in运算符:希望他的左操作数是一个字符串或可以转换为字符串,希望他的右操作数是一个对象.如果右操作数的对象拥有一个名为左操作数值的属性名,那么表达式返回true. var point= {x:1,y:3}; // 定义一个对象 "x" in point; // 返回为true:对象有一个名为x的属性 "z" in point; // 返回为false;对象没有名为z的属性 "toString" in point // 返回true,对象继承了to…
内容要点: 一.in运算符 in运算符希望它的左操作数是一个字符串或可以转换为字符串,希望它的右操作数是一个对象.如果右侧的对象拥有一个名为左操作数数值的属性名,那么表达式返回true. 例如: var point=["x":1,"y":2]; var a="x" in point; //true:对象里有一个名为"x"的属性 var b=z in point; //false:对象里不存在名为"z"…
今天收到RSS订阅中有一篇<Javascript – Arraylike的7种实现>,看第一种实现方式是,瞬间被!function(){}()这种匿名函数自执行方式给亮瞎了眼睛.这种写法绝对是装逼神器,代码如下: !function () { //通过闭包实现 var List = function () { var list = [], self = { constructor: List, //如果希望更像原生一点,将length定义为属性,那么length则需要自己维护 length:…
instanceof运算符希望左操作数是一个对象,右操作数表示对象的类:如果左侧的对象是右侧类的实例,则返回true,否则返回false.由于js中对象的类是通过初始化它们的构造函数来定义的,因此instanceof的右操作数应当是一个函数.比如: var d = new Date(); d instanceof Date; //true d instanceof Object; //true d instanceof Number; //false 所有对象都是Object的实例,intanc…