创建简单的JavaScript对象

2015-09-04  本文已影响56人  LuckyJing

引言:阅读《JavaScript语言精粹》这本书时的一些笔记摘要。
在JavaScript,一切皆对象,对象相当于属性的容器,每一个属性都拥有名字和值。

对象字面量

这是一种简便地创建对象的方式。

var emptyObject = { };
var people = {
    firstName:"Lucky",
    lastName:"Jing"
}

对象的访问
一般情况下优先使用.表示法

people["firstName"]
people.firstName

||运算符可以用来填充默认值

var value = people.age || 20;

对象通过引用来传递
对象之间绝对不会发生拷贝,也就是通过赋值运算符=并不会得到新的实例。

var people1 = people;
people1.firstName = "newName";//直接影响了people.firstName

原型

if(typeof Object.beget !=='function'){
    Object.beget = function (object){
        var F = function(){};
        F.prototype = object;
        return new F();
    };
}
var otherPeople = Object.beget(People);

当我们对otherPeople的属性进行更改的时候是不会触及到原型的。相反,如果我们对原型进行更改,那么对所有基于该原型创建的对象可见,其实就是继承的实现。

反射

通过typeof检查对象的属性的时候,是会顺着它的原型链依次查找的,例如每一个对象都继承了ObjecttoString()方法,那么调用typeof people.toString将会返回一个确定的值function,尽管我们再声明People时并没有显式指定toString()方法。

hasOwnProperty方法可以检测对象独有的属性,换句话说,也就是不会顺着原型链进行查找。

删除

delete运算符可以删除对象的属性,但是不会触及原型链。例如people1的name属性值为newName,删除之后,则再次调用时,就会输出其原型的name属性值。

避免全局变量污染的方法之一

最小化全局变量
在程序中只出现一个全局变量,而把其他的通过类似于namespace的方式(这在C++中非常常见)包裹起来,例如:

var MYAPP = {};
MYAPP.const= {
    PI:3.1415926
};
MYAPP.value= {
    result:undefined
};
MYAPP.value.result = MYAPP.const.PI;
上一篇 下一篇

猜你喜欢

热点阅读