原型继承
程序员文章站
2022-06-15 15:51:36
...
// 先创造一个父类
function Foo(name) {
this.name = name;
console.log('1 ' + this.name);
}
// 通过prototype给父类添加一个方法
Foo.prototype.myName = function() {
return this.name;
};
// 再创造一个子类
function Bar(name, label) {
// 要点是,this 的指向不是在定义时被确定的,而是在执行环境中被确定的
// 对于这行代码来说,在执行到这行代码的时候,function Foo() 中
// this.name = name,this 变为 Bar 的上下文, this.name 变为 在Bar上下文中的name属性,name 为我们传入的参数
Foo.call(this, name);
this.label = label;
}
// 把Bar链接到Foo的原型链上,构成继承
Bar.prototype = Object.create(Foo.prototype);
// 通过prototype给子类添加一个方法
Bar.prototype.myLabel = function() {
return this.label;
};
// 创建一个Bar对象实例
const a = new Bar('a', 'obj a');
console.log(a.myName()); // 输出'a'
console.log('2 '+ a.myLabel());// 输出 '2 obj a'
const b = new Foo('xxx');// 输出'1 xxx'
console.log('3 '+ b.myName() + '\n');// 输出'3 xxx'
console.log('4 '+ a.name);// 输出'4 a'
// 其实还有一个输出,如果真懂了的话知道在哪里
上一篇: Jquery基础(语法、选择器)
下一篇: flink知识总结