第二章(2)面向对象编程

2.1 封装------创建—个类

var Book=function(id,bookname,price){

this.id = id;

this.bookname= bookname;

this.price = price;

}

Book.prototype.display = function(){

return this.id+this.bookname+this.price

};

var book=new Book(10,'wpcBook',56);

问:“通过this添加的属性和方法同在prototype中添加的属性和方法有什么区别呀?”

简短的说:通过类创建一个新对象时,this指向的属性和方法都会得到相应的创建,而通过 prototype 继承的属性或者方法是每个对象通过 prototype 访问到,所以我们每次通过类创建一个新对象时这些属性和方法不会再次创建。

通过this添加的属性、方法是在当前对象上添加的,然而 JavaScript 是一种基于原型prototype的语言,所以每创建一个对象时它都有一个原型prototype用于指向其继承的属性、方法。这样通过prototype继承的方法并不是对象自身的,所以在使用这些方法时,需要通过 prototype 一级一级查找来得到。这样你会发现通过this定义的属性或者方法是该对象自身拥有的,

你可能感兴趣的:(第二章(2)面向对象编程)