博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript高级程序设计之原型对象
阅读量:4964 次
发布时间:2019-06-12

本文共 1487 字,大约阅读时间需要 4 分钟。

构造函数、原型对象、构造器是一体的关系,同时产生;

实例中的隐藏属性__proto__指向原型对象;

原型对象是这四种关系的纽带。

原型对象是动态的,不论在何处变化,实例中可以立即体现出来。

var Person = function(name) {    this.name = name;};var p1 = new Person("Nicholas");Person.prototype.say = function() {    console.log(this.name);};/* * 原型对象具有动态性 * 不论在何处添加的属性,可以立即在实例中调用 */p1.say();  // Nicholas/* * 有构造函数必有原型对象 * 有原型对象,其中必有构造器属性 * 原型对象中的特殊属性构造器指向构造函数本身 */console.log(Person.prototype.constructor === Person);  // true/* * 实例中的原型属性指向构造函数的原型对象 * 实例中的指针仅指向原型对象,而不指向构造函数 */console.log(p1.__proto__ === Person.prototype);  // true

重写整个原型会使其失去动态性,丢失构造器

var Person = function(name) {    this.name = name;};/* * 这种写法使原型不再具有动态性 * 且丢失了Person.prototype.constructor */Person.prototype = {    say: function() {        console.log(this.name);    }};// 实例必须在原型对象声明之后才能调用原型中的方法var p1 = new Person("Nicholas");p1.say();  // Nicholasconsole.log(Person.prototype.constructor === Person);  // falseconsole.log(p1.__proto__ === Person.prototype);  // true

 Douglas Object.create

// Douglas Object.create 这是基于原型的继承if (typeof Object.create !== "function") {    Object.create = function (obj) {        var F = function () {};        F.prototype = obj;        return new F();    };}var person = {    name: "lily",    friends: ["poly", "lucy"]};// 整个person对象成为了person2的原型对象var person2 = Object.create(person);person2.name = "Lilei";// 修改了原型对象,也既是person对象person2.friends.push("Hanmeimei");console.log(person.friends);  // ["poly", "lucy", "Hanmeimei"]

 

转载于:https://www.cnblogs.com/xiankui/p/3756976.html

你可能感兴趣的文章
[Leetcode Week13]Search a 2D Matrix
查看>>
查看端口占用cmd命令
查看>>
2019.01.17王苛震作业
查看>>
清除浮动
查看>>
PayPal(贝宝)支付接口、文档、IPN
查看>>
ORACLE 10G R2_执行计划中cost cardinality bytes cpu_cost io_cost解释
查看>>
本地存储
查看>>
MP3的播放与停止
查看>>
牛客(59)按之字形顺序打印二叉树
查看>>
JavaScript 图表库 xCharts
查看>>
Android项目的目录结构
查看>>
C++中“引用”的底层实现
查看>>
Spring Cloud与微服务构建:微服务简介
查看>>
Babel 是干什么的
查看>>
cocos2dx-3.0(8)------Label、LabelTTF、LabelAtlas、LabelBMFont使用之法
查看>>
CODE[VS] 1842 递归第一次
查看>>
20180418小测
查看>>
数字三角形
查看>>
NGUI 减少drawcall规则
查看>>
三元表达,匿名函数
查看>>