一、对象字面量是一个 名/值 对列表,每一个 名/值 对之间用逗号分隔,最后用一个大括号括起来。名/值对 表示对象的一个属性或方法,名和值之间用冒号分隔。javascript
/**
* @author zhanghua
*/
var literal = {
add: function(){
alert("add");
},
del: function(){
alert("delete");
},
update: function(){
alert("update");
},
name: "zhangsan",
callLiteral: function(){
// 对于当前字面量对象的调用,要加this关键字
this.add();
}
};html
二、首先为一个对象定义构造函数,为对象的属性赋值。这里面的属性是自定义属性。java
var BaseCalculator = function() {
this.decimalDigits = 2;
};
三、原型使用的两种方式: git
(1) 经过对象字面量给Calculator的prototype属性赋值:函数
BaseCalculator.prototype = {
add: function(x, y) {
return x + y;
},
subtract: function(x, y) {
return x - y;
}
};
(2)经过当即执行函数为prototype赋值,能够达到方法的私有化:
BaseCalculator.prototype = function () {
add = function (x, y) {
return x + y;
},
subtract = function (x, y) {
return x - y;
}
return {
add: add,
subtract: subtract
}
} ();
(3)
Calculator.prototype = BaseCalculator.prototype; Calculator的实例只能访问BaseCalculator原型中的方法和属性,不能访问构造函数中的属性。
Calculator.prototype = new BaseCalculator(); Calculator的实例既能访问BaseCalculator原型中的方法和属性,也能访问构造函数中的属性。
(4)重写原型:在使用第三方JS类库的时候,每每有时候他们定义的原型方法是不能知足咱们的须要,可是又离不开这个类库,因此这时候咱们就须要重写他们的原型中的一个或者多个属性或functionthis
Calculator.prototype.subtract = function(x, y, z){return x + z –y;};prototype
(5) 原型链: 是由子对象对父对象进行屡次原型继承造成的链式关系。当调用子对象的某个属性或方法时,javascript会向上遍历原型链,直到找到为止,没有返回undefined。可是注意: 属性在查找的时候是先查找自身的属性,若是没有再查找原型,再没有,再往上走,一直插到Object的原型上。htm
(6) hasOwnProperty函数: 是Object.prototype的一个方法,它可以查找一个对象是否包含自定义属性而不是原型链的属性。能够对 for in 进行过滤。 可是注意: 最好使用{}.hasOwnProperty方式先除去对象
某个对象中可能包含的对hasOwnProperty属性非法占用。blog
以上参考大牛博客: http://www.cnblogs.com/TomXu/archive/2012/01/05/2305453.html