资讯专栏INFORMATION COLUMN

js 原型

Lionad-Morotar / 2061人阅读

摘要:所有对象都有属性,指向其构造函数的属性。代码示例张三李四知识点总结操作符具体干了什么新建一个空对象将的属性赋值给的属性将的指向,并执行函数返回构造函数一般首字母大写,用以区分普通的函数。

此刻想法:
    接触前端开发两年了,虽然实际工作中编写代码没有问题,但是对于前端的一些基础知识点掌握得的确不牢固,
每一次仔细琢磨一个知识点,都会有新的领悟。就从这篇文章开始,记录自己的前端学习历程。

重点

1、js所有引用数据类型本质都是对象。
2、对象分为普通对象和函数对象。
3、所有对象都有_proto_属性,指向其构造函数的prototype属性。
4、只有函数对象有prototype属性。

代码示例

function Person(name,age){
    this.name = name;
    this.age = age;
}

Person.prototype.alertName = function(){
    alert(this.name);
}

var p1 = new Person("张三","18");

p1.alertAge = function(){
    alert(this.age);
}

var p2 = new Person("李四","20");

p2.alertAge = function(){
    alert(this.age);
}

知识点总结:

1、new 操作符具体干了什么?

(1)新建一个空对象 
    var obj = {};
(2)将Person的protoype属性赋值给obj的_proto_属性
    obj._proto = Person.prototype;
(3)将Person的this指向obj,并执行Person函数
    Person.call(obj);
(4)返回obj
    return obj;

2、构造函数一般首字母大写,用以区分普通的函数。

3、通过把要实现的方法alertName,赋值给构造函数Person的prototype属性,实现了实例p1、p2共享此方法。实现了继承的功能,达到了节省内存的目的。

4、当试图得到一个对象的某个属性时,如果这个对象本身没有该属性,那么会去它的_proto_中寻找。一直往上寻找,就形成了原型链。一直找到最上层,没有则宣告失败,返回undefined。最上层是Object.prototype._proto_值为null。

p1._proto_指向Person.prototype,Person.prototype._proto_指向Object.prototype,
Object.prototype._proto_等于null。

5、函数的prototype属性中的_proto_属性和普通对象的_proto_属性一样,用来对应继承关系。

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

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

相关文章

  • 深入浅出,JS原型链的工作原理

    摘要:前言原型链,即原型链条。原型的作用在中,每个对象都有自己的原型。访问的属性方法依旧不存在于该原型,则会继续访问该原型的原型 前言:原型链,即原型链条。它是由原型、原型的原型、原型的原型的原型...这一规则组合成的,经常被应用于继承。 原型的作用在JS中,每个对象都有自己的原型。当我们访问对象的属性和方法时,JS会先访问对象本身的属性和方法。如果对象本身不包含这些属性和方法,则访问对象...

    Ali_ 评论0 收藏0
  • 理解js原型与继承

    摘要:相当于在用原型继承编写复杂代码前理解原型继承模型十分重要。同时,还要清楚代码中原型链的长度,并在必要时结束原型链,以避免可能存在的性能问题。 js是一门动态语言,js没有类的概念,ES6 新增了class 关键字,但只是语法糖,JavaScript 仍旧是基于原型。 至于继承,js的继承与java这种传统的继承不一样.js是基于原型链的继承. 在javascript里面,每个对象都有一...

    wthee 评论0 收藏0
  • 小笔记:JS原型原型

    摘要:所以为了方便查看一个对象的原型,和中提供了这个非标准不是所有浏览器都支持的访问器引入了标准对象原型访问器。在的原型对象中,还包含一个属性,这个属性对应创建所有指向该原型的实例的构造函数。 JS原型? 有句简洁直观的描述:原型是Javascript中的继承的基础,JavaScript的继承就是基于原型的继承。 在JavaScript中,原型也是一个对象,通过原型可以实现对象的属性继承,J...

    CastlePeaK 评论0 收藏0
  • JS对象继承与原型

    摘要:此用来定义通过构造器构造出来的对象的原型,构造器内部的代码用来给对象初始化。 对象继承 VS 类继承 在 class-based 的面向对象的世界里,要出现对象,必须先有类。类之间可以继承,类再使用 new 操作创建出实体,父子对象之间的继承体现在父类和子类上。你不能说 对象 a 继承了对象 b,只能说 class A 继承了 class B,然后他们各自有一个实例a、b。 JS中实现...

    QLQ 评论0 收藏0
  • JavaScript继承方式详解

    摘要:可以通过构造函数和原型的方式模拟实现类的功能。原型式继承与类式继承类式继承是在子类型构造函数的内部调用超类型的构造函数。寄生式继承这种继承方式是把原型式工厂模式结合起来,目的是为了封装创建的过程。 js继承的概念 js里常用的如下两种继承方式: 原型链继承(对象间的继承) 类式继承(构造函数间的继承) 由于js不像java那样是真正面向对象的语言,js是基于对象的,它没有类的概念。...

    Yangyang 评论0 收藏0
  • JS基础-原型原型链真的不能一知半解

    摘要:原型链和对象的原型是对象实例和它的构造函数之间建立的链接,它的值是构造函数的。对象的原型根据上文提到的构造调用函数的时候会创建一个新对象,自动将的原型指向构造函数的对象。 showImg(https://segmentfault.com/img/remote/1460000020185197); JS的原型、原型链一直是比较难理解的内容,不少初学者甚至有一定经验的老鸟都不一定能完全说清...

    changfeng1050 评论0 收藏0

发表评论

0条评论

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