The front end - Constructor - Collection

1.new operation done what

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

(1)创建一个新对象;

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

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

(4)返回新对象。

2. Talk about your understanding of this

普通函数中:this->window    

定时器中:this->window   

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

3. Several inheritance

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, and bind any difference

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

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

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

apply和call的区别是

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




Prototype and prototype chain of the prototype chain applications 5.Js

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

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

应用:

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

How 6.Javascript inheritance?

   原型链继承,借用构造函数继承,原型+构造函数组合继承
Published 68 original articles · won praise 0 · Views 1280

Guess you like

Origin blog.csdn.net/zmmsdk/article/details/104213785