原型的概念和作用
描述原型的概念前,请诸位先看如下代码
function Person(name, age) {
this.name = name;
this.age = age;
this.sayHi = function() {
console.log('Hi, meimei,go play.');
};
}
var zs = new Person('张三', 19);
var ls = new Person('李四', 20);
zs.sayHi();
ls.sayHi();
console.log(ls.sayHi === zs.sayHi); //false
这说明在内存中存在了两个逻辑功能相同的sayHi函数,这是冗余的代码,更会造成内存的浪费,而用户开启大量应用程序的时候,只会给我们网页留很少很少的内存。
这个时候,我们就需要把这个sayHi函数放在原型上。原型就是用来放共享数据,方法的地方。
原型的概念定义为:所谓原型就是指函数的prototype属性所引用的对象,这个对象就是原型。
原型的作用1:实现对象之间的数据共享。2.在es6之前,没有class的情况下,模拟面向对象,构造函数中放私有属性,原型上放公有属性,一般为方法。
这时,我们上述的代码可以改造成如下的样子
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.sayHi = function() {
console.log('Hi, meimei,go play.');
};
var zs = new Person('张三', 19);
var ls = new Person('李四', 20);
zs.sayHi();
ls.sayHi();
console.log(ls.sayHi === zs.sayHi); //true
**获取原型的方法:1.函数.prototype;2.对象._ proto (如果当前浏览器不支持. proto _,那么就通过对象的构造函数找:.constructor.prototype;
原型本身是一个对象。
此外,在es5中,还提供了一个比较简便的,不需要写构造函数等原型创建对象方法:object.create。
var parent = {say: function() {console.log('nihao');}};
var np = Object.create(parent);
// 相当如下创建对象方法
function F() {}
F.prototype = parent;
var np = new F;
网友评论