ps. prototype的定义略。hasOwnProperty定义如下:
例1:
var obj = {id: 3}; obj.prototype.set = function(){ // 报错,因为obj是‘普通对象’ this.name = 'wy'; }; alert(obj.hasOwnProperty('id'));
例2:
var obj = {id: 3}; obj.prototype.name = 'yw'; // 报错,因为obj是‘普通’
例3:
var Obj = function(){ this.id = 3; }; alert(Obj.hasOwnProperty('id')); // false,因为Obj是"函数对象",不是"普通对象"
例4:
var Obj = function(){ this.id = 3; }; Obj.prototype.set = function(){ this.name = 'wy'; }; var o = new Obj(); alert(o.hasOwnProperty('id')); // true alert(o.hasOwnProperty('name')); // false
例5:
var Obj = function(){ this.id = 3; }; Obj.prototype.set = function(){ this.name = 'wy'; }; var o = new Obj(); o.set(); // 注意 alert(o.hasOwnProperty('id')); // true alert(o.hasOwnProperty('name')); // 注意:true
例6:
var Obj = function(){ this.id = 3; }; Obj.prototype.name = 'wy'; var o = new Obj(); alert(o.hasOwnProperty('name')); // false
例7:
var Obj = function(){ this.id = 3; }; Obj.prototype.name = 'wy'; Obj.prototype.set = function(){ Obj.prototype.name = 'hello'; // 赋值 }; var o = new Obj(); o.set(); alert(o.hasOwnProperty('name')); // false
例8:
var Obj = function(){ this.id = 3; }; var o = new obj(); o.name = 'wy'; alert(o.hasOwnProperty('name')); // true,直接给对象赋值
例9:
var Obj = function(){ this.id = 3; }; Obj.prototype.name = 'wy'; var o = new Obj(); alert(Obj.prototype.hasOwnProperty('name')); // true,直接访问原型链
例10:
var Obj = function(){ this.id = 3; }; Obj.prototype.set = function(na){ this.name = na; }; var o1 = new Obj(); o1.set('wy'); var o2 = new Obj(); o2.set('lh'); alert(o1.name); // wy alert(o2.name); // lh