美文网首页es6
JS里公用属性(原型与原型链)

JS里公用属性(原型与原型链)

作者: elsa919 | 来源:发表于2019-01-22 09:50 被阅读68次

一、什么是原型?

 在javascript中,全局函数Number、String、Boolean、Object等,都有toSting()、valueOf()等方法,倘若每个函数都独自定义这些相同的属性和方法,势必对内存造成极大的浪费。因此这些相同的属性和方法,都被集合到一起,对象可通过__proto__属性访问(公用的属性全部存在__proto__里)这些共用属性prototype,如图:

var n = new Number(1)

var obj = {}

obj.__proto__ === Object.prototype //true obj共用Object的属性

n.__proto__ === Number.prototype //true,n共用Number的属性

Number.prototype.__proto__===Object.prototype//true,Number.prototype 本身也是个对象,共用Object的属性

var s = new String('hi')

s.__proto__ === String.prototype //true

一般:object对象公有的属性有:toString   valueOf

Number公有属性有:toFixed   toExponential   toString() //可接16进制

公有属性就是原型:prototype

(1)object的公有属性

Var o1 = {}

O1.__proto__ = object.prototype

(2)number的公用属性

Var n1 = new number(1)

n1.__proto__ = number.prototype

n1.__proto__.__proto__ = object.prototype    // n1共有属性的共有属性

(3)String / boolean的公用属性

Var s1 = new String(‘1’)

s1.__proto__ = String.prototype

s1共有属性的共有属性:s1.__proto__.__proto__ = object.prototype

Var b1 = new Boolean(ture)

b1.__proto__ = Boolean.prototype

b1.__proto__.__proto__ = object.prototype    // b1共有属性的共有属性

语法:(1) var 对象 = new 函数()

(2)对象.__proto__ ===函数.prototype

Number.__proto__ === Function.prototype // true,因为 Number 是 Function 的实例

Object.__proto__ === Function.prototype // true,因为 Object 是 Function 的实例

Function.__proto__ === Function.prototye // true,因为 Function 是 Function 的实例!

Object.__proto__ ===Function.__proto__ // true,因为 Function.__proto__ === Function.prototye

什么是原型链?

每个实例对象(object )都有一个私有属性(称之为__proto__)指向它的原型对象(prototype)。该原型对象也有一个自己的原型对象(proto) ,层层向上直到一个对象的原型对象为 null。这种链式结构,称之为原型链。

相关文章

  • JS里公用属性(原型与原型链)

    一、什么是原型? 在javascript中,全局函数Number、String、Boolean、Object等,都...

  • JS原型链

    1什么是JS原型链? 通过__proto__属性将对象与原型对象进行连接. 1.1 JS原型链的作用? 组成的一个...

  • JavaScript 学习

    JS 原型与原型链 每个对象都有 __proto__属性,但只有函数对象才有 prototype 属性 所有对象的...

  • 廖雪峰JS小记

    (function(){})() 原型,原型链 浅谈Js原型的理解JS 原型与原型链终极详解 对象 对象:一种无序...

  • JS的__proto__和prototype

    最近在回顾JS的原型和原型链的知识,熟悉JS的同学都知道JS的继承是靠原型链实现的,那跟原型链相关的属性__pro...

  • JS原型与原型链

    1.原型(公用属性) 2.原型链 关于原型链,你需要的知道的是:var XXX=new YYY()XXX的类型是对...

  • Javascript(三)之原型继承理解

    进阶路线 3 原型继承 3.1 优秀文章 最详尽的 JS 原型与原型链终极详解 一 最详尽的 JS 原型与原型链终...

  • js基础知识(二)

    一、js原型和原型链 1、原型讲解: 普通的对象:是没有prototype属性的,只有隐藏属性__proto__,...

  • js基础(三)

    js基础 原型链和原型对象 ... ... js没有继承原型对象prototype通常用来添加公共的属性或行为且只...

  • 2022前端高频面试题

    JS相关 1.原型和原型链是什么 原型和原型链都是来源于对象而服务于对象的概念js中引用类型都是对象,对象就是属性...

网友评论

    本文标题:JS里公用属性(原型与原型链)

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