javaScript语言精髓(对象)

1.对象是通过引用来传递,它们永远不会被复制。

var x={};
var stooge=x;
stooge['a']='aaa';
console.log(x.a);//aaa

2.可以通过给Object增加一个create方法,创建一个原对象作为其原型的新对象,从而实现复制的效果。即改变新对象的值不会影响该对象的原型。

if(typeof Object.beget!=='function'){
Object.create=function(o){
var F=function(){};
F.prototype=o;
return new F();
    }
}

var another_stooge=Object.create(stooge);
  1. typeof用于确定对象的类型。(它会去检查原型链)
    hasOwnProperty方法不会去检查原型链。

4.for in 可用来遍历一个对象中所有属性名,但是包括函数和原型链中的属性也会被遍历,这时,可以通过typeof或hasOwnProperty来排除你不想要的值。

var name;
for(name in another_stooge){
if(typeof another_stooge[name] !=='function'){
          console.log(name+':'+another_stooge[name])
      }
}

但for in 方式属性出现的顺序时不确定的。

for循环是确定的。
推荐使用数组存储变量值,然后使用for循环取遍历。(但个人觉得有你并不知道对象中有哪些key值,所以for in还是很有必要的。)

var arr=['a','b','c'];
for(var i=0;i<arr.length;i++){
console.log(arr[i]+':'+another_stooge[arr[i]]);
}

5.delete运算符可以用来删除对象的属性,如果对象包含该属性,那么该属性就会被移除,它不会触及原型链中的任何对象。
删除对象的属性可能会让原型链中的属性透显出来。

6.减少全局变量污染,最小化使用全局变量的方法之一是为你的应用只创建一个唯一的全局变量。把其它的变量或函数都放置该全局变量下。

var MyApp={};
MyApp.stooge={
'first-name:'aaa'
};
MyApp.flight=function(){}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容