码迷,mamicode.com
首页 > 其他好文 > 详细

构造函数、原型和继承

时间:2019-09-27 21:11:01      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:ace   声明式   方式   +=   自身   机制   初始化   obj   特殊   

  • element.insertAdjacentHTML(position, text);
  • 可以读取字符串里面的标签

创建对象方式

  • 字面量创建
  • 构造函数 new Object()
  • 自定义构造函数

1、构造函数和原型

  • 声明式函数的使用方式不同决定其为构造函数还是普通函数
    • 通过 new 来使用的声明式函数式构造函数
  • new在执行时做的四件事
    • 在内存中创建一个新的空对象。
    • 让this指向这个新的对象。
    • 执行构造函数里面的代码,给这个新对象添加属性和方法。
    • 返回这个新对象(所以构造函数里面不需要return)。

2、构造函数和原型

  • 构造函数是一种特殊的函数,主要用来初始化对象,即为对象成员变量变量赋初始值,它总与new一起用。

  • new在执行时做的4件事情

      1. 在内存空间开辟一片空间
      2. 让this指向这个空间
      3. 执行构造函数里面的代码,给新对象添加属性和方法
      4. 返回这个对象

3、构造函数原型对象 prototype

  • 原型对象就是一个属性,是构造函数的属性,prototype也称为原型对象
  • 作用:共享方法,节省内存

4、对象原型 proto

  • 只读属性

每一个对象都有一个原型,作用是指向原型对象prototype

5、constructor构造函数

  • 主要作用可以指回原来的构造函数

    // 使用对象方式添加方法要
    // 给设置一个指路的不然就都覆盖了,找不到构造函数了

6、原型链

  • 作用:提供一个成员查找机制,或查找规则

    • 每一个构造函数都有一个属性叫原型对象,在原型对象里放方法,new 构造函数可以生成一个实例对象,实例对象都有原型,可以指向构造函数的原型对象,原型对象可以通过constructor指向构造函数,同时原型对象还可以通过原型找到上一级的原型对象,最大的是Object的原型对象,再往上找就是null

    • 当访问一个对象的属性(包括方法)时,首先查找这个对象自身有没有该属性。

      如果没有就查找它的原型(也就是__proto__指向的prototype 原型对象)。

      如果还没有就查找原型对象的原型(Object的原型对象)。

      依此类推一直找到Object 为止(null)。

      __proto__对象原型的意义就在于为对象成员查找机制提供一个方向,或者说一条路线。

7、扩展内置对象

可以通过原型对象,对原来的内置对象进行扩展自定义的方法。比如给数组增加自定义求偶数和的功能。

  • 数组求和
  • 求最大值
  • 最小值
var arr = [1, 2, 3];
var arr1 = [23, 2, 5];
Array.prototype.sum = function (arr) {
  var sum = 0;
  arr.forEach(function (element, index) {
    sum += element;
  });
  return sum;
};

console.log(arr.sum);
console.log(arr.sum(arr));
console.log(arr1.sum(arr1));
console.log(Array.prototype);

8、继承

ES6之前并没有给我们提供extends 继承。我们可以通过构造函数+原型对象模拟实现继承,被称为组合继承。

  • 属性继承

    • function Father(uname, age) {
        this.uname = uname;
        this.age = age;
      }
      function Son(uname, age, score) {
        Father.call(this, uname, age);
        this.score = score;
      }
      
      var obj = new Son('son', 18, 99);
      console.log(obj)
      console.log(obj.score);
      console.log(obj.uname);
  • call()

    • 调用这个函数, 并且修改函数运行时的this 指向

    fun.call(thisArg, arg1, arg2, ...);

    • call把父类的this指向子类

    • thisArg :当前调用函数this 的指向对象

    • arg1,arg2:传递的其他参数

构造函数、原型和继承

标签:ace   声明式   方式   +=   自身   机制   初始化   obj   特殊   

原文地址:https://www.cnblogs.com/itxcr/p/11600181.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!