资讯专栏INFORMATION COLUMN

Node.js new 、 prototype 与 __proto__

BothEyes1993 / 1763人阅读

摘要:一构造一个对象相当于中的有参构造函数二对象实例隐式传递指针女女三与总结与中每个对象都有一个属性建立两个对象之间的关联一个对象可以使

一、构造一个Person对象(相当于Java中的有参构造函数)
function person(name, sex, age, addr, salary) {
    this.name = name;
    this.sex = sex;
    this.age = age;
    this.addr = addr;
    this.salary = salary;
}
二、对象实例隐式传递this指针
person.prototype.func_pro=function () {
    console.log(this);
};
let Sakura =new person("Sakura","女",16,"FateStayNight",10000000000);
let Illyasviel= new person("Illyasviel ","女",14,"FateStayNight",9999999999);
Sakura.func_pro();
Illyasviel.func_pro();
console.log("-------------------------------------------------------" + "

");
三、new 与 prototype

1、总结:

console.log("new 与 prototype");
//1、let variable ={};
//2、nodejs中每个对象都有一个__proto__属性
//   建立两个对象之间的关联:
//   一个对象可以使用__proto__关联另外一个对象
//    __proto__(对象的内部原型的引用): prototype(对象的原型) 浅拷贝
//    __proto__与prototype指向同一个对象的引用
//3、 对象实例作为this指针的指向 传递给后面的函数
//4、 调用这个函数

2、可以通过prototype.key=value 来扩充对象Elf

function Elf(name) {
    this.name =name;
    console.log("Elf	"+name);
}
console.log("可以通过prototype.key=value 来扩充对象Elf");
Elf.prototype.love=function () {
    console.log("%s love "DATE A LIVE!"", this.name);
};

let Yuzuru = new Elf("Yuzuru");
let Kaguya = new Elf("Kaguya");

Yuzuru.love();
Kaguya.love();

console.log("-------------------------------------------------------" + "

");

3、 实例.__proto__ 与 方法.prototype指向 同一个对象的引用

console.log("实例.__proto__ 与 方法.prototype指向 同一个对象的引用");
console.log(Yuzuru.__proto__);
console.log(Elf.prototype);

console.log("-------------------------------------------------------" + "

");

let func_data =function(){
    console.log("func_data");
};

func_data.prototype.func_test=function(){
    console.log("func_test",this);
};// 实例.__proto__ 与 方法.prototype指向 同一个对象的引用
console.log("实例.__proto__ 与 方法.prototype指向 同一个对象的引用");
console.log(Yuzuru.__proto__);
console.log(Elf.prototype);

console.log("-------------------------------------------------------" + "

");

let func_data =function(){
    console.log("func_data");
};

func_data.prototype.func_test=function(){
    console.log("func_test",this);
};

4、实例.__proto__ 与 方法.prototype 分别属于2个不同的字典表{}

console.log("实例.__proto__ 与 方法.prototype指向 分别属于2个不同的字典表{}");
let data =new func_data();
data.name="Innocence";
data.__proto__.func_test();
data.func_test();

console.log("-------------------------------------------------------" + "

");

5、可以将对象实例看做为一张字典表

//可以将data看做1张表
console.log("可以将data看做1张表");
//隐式调用this
data.func_test();
//显示调用this 将data作为this传递给data._proto_对象里的函数test_func
data.__proto__.func_test.call(data);

console.log("-------------------------------------------------------" + "

");

6、调用取值的顺序

data.func_test=function () {
    console.log("new func_test",this);
};

data.func_test();
//data.key_func 首先会到对象实例的表里搜索是否有没有这样的key  若没有再到其__proto__里面搜索

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/101154.html

相关文章

  • Node.js 中 Java类的定义,set、get方法,类的实例化,继承的实现,方法重写:学习心得

    摘要:一实体类的定义定义类有参构造方法二定义方法以设置实体类的属性值方法三定义方法以获取实体类的属性值方法四构造实例对象使用全参构造方法获取实例对象桐人男控制台打印实例 一、Node.js 实体类 的定义 //定义类Person 有参构造方法 function Person(name, sex, age, addr, salary) { this.name = name; t...

    fjcgreat 评论0 收藏0
  • JS基础】对象继承的定义实现

    简介 类的概念,本身在javascript的语言上是不存在的, 但由于最近人们使用ES6语法,TS语言上都会有的class extends 继承的概念, 下面我们需要使用原生js, 结合原型链,实现类的 继承,多态 ES5实现继承 原型继承 借用构造函数继承 mixin 复制继承 寄生继承 原型继承方式 原型继承, 主要利用对象的原型链 __proto__, 每一个对象都拥有__proto__...

    darry 评论0 收藏0
  • Node.js中的继承

    摘要:借用构造函数借助或使用构造函数缺少函数复用原型链继承使用指向对象子类无法给父类传递参数无法使用字面量添加新方法所有子类对象共享父类所有方法和属性引用类型组合继承借用构造函数对实例属性继承对共享方法继承会调用两次父类构造函数继承 借用构造函数,借助call或apply,使用Superclass构造函数,缺少函数复用 function Superclass(name = default) ...

    fxp 评论0 收藏0
  • ECMAScript6标准入门(一)新增变量数据结构

    摘要:一简介与的关系是的规格,是的一种实现另外的方言还有和转码器命令行环境安装直接运行代码命令将转换成命令浏览器环境加入,代码用环境安装,,根目录建立文件加载为的一个钩子设置完文件后,在应用入口加入若有使用,等全局对象及上方法安装 一、ECMAScript6 简介 (1) 与JavaScript的关系 ES是JS的规格,JS是ES的一种实现(另外的ECMAScript方言还有Jscript和...

    Tangpj 评论0 收藏0
  • JavaScript 进阶之深入理解数据双向绑定

    摘要:当我们的视图和数据任何一方发生变化的时候,我们希望能够通知对方也更新,这就是所谓的数据双向绑定。返回值返回传入函数的对象,即第一个参数该方法重点是描述,对象里目前存在的属性描述符有两种主要形式数据描述符和存取描述符。 前言 谈起当前前端最热门的 js 框架,必少不了 Vue、React、Angular,对于大多数人来说,我们更多的是在使用框架,对于框架解决痛点背后使用的基本原理往往关注...

    sarva 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<