其实就是隐藏了 new Object() ,更深的层次应用以后几个教程在说明。
instanceof 操作符
用instanceof来判断对象是否是指定的构造函数创建的。
function Hero(){ } var h = new Hero(); var o = {}; h instanceof Hero;//true h instanceof Object;//false o instanceof Object;//true
要注意的是instanceof 后面的是个引用 不是个函数 如错误写法 h instanceof Hero();//错误
函数返回对象
可以用构造函数来创建个对象,也可以通过普通函数返回对象来创建对象
function factory(name){ return { name:name }; }
用这个方法创建对象
var o = factory('one'); o.name
让我们接下来看看比较少见的构造函数返回对象的例子
function C(){ this.a = 1; return {b:2}; } var c2 = new C(); typeof c2.a //undefined c2.b; // 2
说明了 并不返回this了 而是返回了对象{b:2}。。这点要注意
传递对象
如果传递一个对象到函数里,那么传递的是个引用。如果改变了这个引用,也就会改变原始的对象。
下面是个对象赋值的例子
var original = {name:'nicholas'}; var copy =original; copy.name;//'nicholas'; copy.name = 'Jason'; original.name;// 'Jason';
修改了copy的属性name 也就等于修改了original的属性name
对象传参到函数中,也是同样的。
function modify(o){ o.name ='Jason' } var original={name:'nicholas'}; modify(original); original.name;//Jason
对象的比较
两个对象的比较如果是true的话,那么他们就是同一个对象的引用。
var fido ={breed:'dog'}; var benji ={breed:'dog'}; benji===fido; //false; benji==fido; //false;
以上的代码都不是同一引用,所以都是false
您可能感兴趣的文章: