语言特点

2021-02-06 20:16

阅读:599

标签:声明   实现继承   空间   tor   key   共享问题   声明变量   特点   The   



继承方式一

/*function Child(name, age, gender) {
this.name = name;
this.age = age;
}
var c1 = new Child("孩子", 12);

call apply bind 修改this指向的方法
*/
function Child(name, age) {
Parent.call(this, name, age)
}
var c2 = new Child("雪儿", 12);
console.log(c2);
//就是说只是把父类构造函数里面的属性和方法继承了但是父类原型里面的方法继承不了
//c2.test(); // 报错
//创建的child对象并不需要work方法但是每次创建都会有(浪费空间)
c2.work() //执行了函数体
继承方式二

//重新替换原型之后 构造函数并不指向原构造函数,所以要将构造函数指向原函数Child . prototype.constructor = Child;

var c1 = new Child("wangwu", 12);
console.log(c1.type);
c1.test()
//为什么不直接使用Child.prototype = Parent??
//把父类的构造函数直接替换掉子类的原型会导致父类构造函数的私有属性发生变化甚至有些成员 父类构造函数并不需要
child.prototype = Parent;
Child.prototype.study = function() {
console.1og( "好好学习,天天向上");
}
console.dir(Parent);
Parent.study();

继承方式四

Son.prototype.sleep = function() {
console.log(this.name + "我要睡觉 了");
}
var s1 = new Son(12);
//这个是父类构造函数里面的方法
s1.run();
//是父类原型里面的方法
s1.eat();
console.log(s1.type);
//自己构造函数里面的方法
s1.study();
//自己的原型里面的方法
s1.sleep();

复习

// 3. bind()
//语法:函数名.bind(this的新指向, 参数1,参数2, ......
//不会执行修改了this指向后的函数,而是直接作为返回值返回
function getSum(n1, n2) {
console.1og(n1 + n2);
console.log(this);
}
var fn = getSum.bind(obj);
console.log(fn);
fn(12, 12)

语言特点

标签:声明   实现继承   空间   tor   key   共享问题   声明变量   特点   The   

原文地址:https://www.cnblogs.com/zycs/p/12762462.html


评论


亲,登录后才可以留言!