前端-构造函数-合集

1.new操作做了啥

要创建Person的新实例,必须使用new操作符。
以这种方式调用构造函数实际上会经历以下4个步骤:

(1)创建一个新对象;

(2)将构造函数的作用域赋给新对象(因此this就指向了这个新对象);

(3)执行构造函数中的代码(为这个新对象添加属性);

(4)返回新对象。

2.谈谈你对this的理解

普通函数中:this->window    

定时器中:this->window   

构造函数中:this->当前实例化的对象
事件处理函数中:this->事件触发对象
在js中一般理解就是谁调用这个this就指向谁

3.几种继承方式

1.扩展原型对象实现继承

function Animal(name,color,say){
  this.name = name;
  this.color = color;
  this.say = function(){
    console.log('喵喵喵');
  }
}
var cat = new Animal('cat','white');// 如果给Animal的prototype属性上
添加个 cry 方法 ,那么实例对象 cat将也会有 cry方法 
Animal.prototype.cry = function(){
  console.log('呜呜呜');
}



2.利用apply(),和call实现继承

function person(name,age)
{
    this.name = name;
    this.age = age;
}
function man(name,age){
    person.apply(this,[name,age]);  //这里就是伪造成person的一个事例
}
var Man = new man('wozien',12);

console.log(Man.name);
console.log(Man.age);



3.组合call+prototype,最常用的一种方式

     function person(name)
{
    this.name = name;
}
person.prototype.showName = function(){
    return this.name;
}
function man(name,age){
    person.call(this,name);
    this.age = age;  //这里就是伪造成person的一个事例
}
man.prototype = new person();
man.prototype.showAge = function(){
    return this.age;
}
var Man = new man('wozien',12);
Man.showName(); //wozien
Man.showAge(); //12

4.apply,call,和bind有什么区别

三者都可以把一个函数应用到其他对象上,注意不是自身对象.

apply,call是直接执行函数调用,

bind是绑定,执行需要再次调用.

apply和call的区别是

apply接受数组作为参数,而call是接受逗号分隔的无限多个参数列表




5.Js的原型和原型链 原型链的应用

每个对象都会在其内部初始化一个属性,就是prototype(原型),

当我们访问一个对象的属性时,
如果这个对象内部不存在这个属性,那么他就会去prototype里找这个属性,
这个prototype又会有自己的prototype,
于是就这样一直找下去,
也就是我们平时所说的原型链的概念。

应用:

原型链是实现继承的主要方法

6.Javascript如何实现继承?

   原型链继承,借用构造函数继承,原型+构造函数组合继承

7.javascript继承的 6 种方法?

\1. 原型链继承

\2. 借用构造函数继承

\3. 组合继承(原型+借用构造)

\4. 原型式继承

\5. 寄生式继承

\6. 寄生组合式继承
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zmmsdk15225185085

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值