javascript prototype
原型法的主要思想是,现在有个类A,想要创建一个类B,这个类是以A为原型的,并且能进行扩展,则称B的原型为A。
-
Javascript 的方法分为三类: 类方法、对象方法、原型方法。
function People(name) { this.name = name; // 对象方法 this.Introduce = function() { console.log("name is " + this.name); } } // 类方法 People.Run = function() { console.log("can run"); } // 原型方法 People.prototype.IntroduceZh = function() { console.log("pro name is " + this.name); } // 测试 var p = new People("jack"); p.Introduce(); People.Run(); p.IntroduceZh();
obj1.func.call(obj)
方法,就是将 obj 当成 obj1,调用 func 方法。
-
prototype
的含义
JavaScript中的每个对象都有
prototype
属性。对象的prototype
属性的解释是,返回对象类型原型的引用。A.prototype = new B();
A的prototype为B的一个实例,可以理解为 A 将 B 中的方法和属性全部克隆了一遍,A 能使用 B 的方法和属性。
- 验证
function base() {
this.show = function() {
console.log("base:show");
}
}
function extend() {
this.show = function() {
console.log("extend:show");
}
}
extend.prototype = new base();
var instance = new extend();
instance.show(); // extend:show
var base = new base();
base.show.call(instance); // base:show
函数运行时,会先去本体的函数中查找,如果找到则运行,否则到prototype
中查找函数。或者可以理解为prototype
不会克隆同名的函数。