美文网首页
构造对象

构造对象

作者: kzc爱吃梨 | 来源:发表于2019-09-26 10:18 被阅读0次

new


new运算符接受一个函数F及其参数:new F(arguements...)。这一过程分成三步:

  1. 创建类的实例。这不是是把一个空对象的proto属性设置为F.prototype。
  2. 初始化实例。函数F被传入参数并被调用,关键字this指向该实例。
  3. 返回实例

根据这几个特性,我们可以改造一下创建对象的方式

function Person(name) {
    this.name = name
    this.sayName = function() {
        console.log(this.name)
    }
}
var p = new Person('hunger')

构造函数


  • 任何函数使用new表达式就是构造函数

  • 每个函数都自动添加一个名称为prototype属性,这是一个对象

  • 每个对象都有一个内部属性 __proto__(规范中没有指定这个名称,但是浏览器都这么实现的) 指向其类型的prototype属性,类的实例也是对象,其__proto__属性指向“类”的prototype

prototype

prototype
通过图示我们可以看出一些端倪,实例可以通过__prop__访问到其类型的prototype属性,这就意味着类的prototype对象可以作为一个公共容器,供所有实例访问。

抽象重复


  • 我们刚才的问题可以通过这个手段解决

  • 所有实例都会通过原型链引用到类型的prototype

  • prototype相当于特定类型所有实例都可以访问到的一个公共容器

  • 重复的东西移动到公共容器里放一份就可以了

看下代码

function Person(nick, age){
    this.nick = nick;
    this.age = age;
}
Person.prototype.sayName = function(){
    console.log(this.nick);
}

var p1 = new Person();
p1.sayName();

这时候我们对应的关系是这样的


image.png

相关文章

  • js构造函数

    构造函数 系统自带的构造函数 对象和构造函数是两回事 对象是通过实例化构造函数而构造的对象实例 自定...

  • 4.2使用预定义类

    对象与对象变量 要想使用对象,就必须构造对象,并指定其初始状态。 使用构造器(constructor)构造新实例构...

  • 对象构造

    重载 如果多个方法或构造器有相同的方法名称、不同的参数,便使用了重载。 方法签名 方法签名:方法名+参数类型 默认...

  • 构造对象

    new new运算符接受一个函数F及其参数:new F(arguements...)。这一过程分成三步: 创建类的...

  • 原型链

    一、创建对象的几种方法 对象字面量 Object构造函数 构造函数 Object.create 二、原型对象、构造...

  • 12.如何查找构造函数和原型的属性

    构造函数.prototype 查看构造函数的原型属性实例对象.ptoto 查看实例对象的构造函数的原型实例对象...

  • c++学习笔记第四天

    一、拷贝构造器 由己存在的对象,创建新对象。也就是说新对象,不由构造器来构造,而是由拷贝构造 器来完成。拷贝构造器...

  • 原型概念

    神秘对象称与构造函数 神秘对象就是构造函数的 "原型属性"简称原型 (构造函数的原型) 神秘对象与构造函数所创建出...

  • 对象的创建与继承

    创建对象 工厂模式 => 构造函数模式 => 原型对象模式 => 构造函数模式+原型对象模式 工厂模式 构造函数模...

  • 01 使用URLSession进程POST请求

    构造URL网络地址 构造网络请求对象 NSURLRequest 通过配置对象构造网络会话 NSURLSession...

网友评论

      本文标题:构造对象

      本文链接:https://www.haomeiwen.com/subject/jzmgyctx.html