美文网首页
JS的原型和闭包(4-6)

JS的原型和闭包(4-6)

作者: zzyo96 | 来源:发表于2019-08-06 12:17 被阅读0次
原文地址: https://www.cnblogs.com/wangfupeng1988/p/3979290.html
1.每个函数function都有一个prototype,即原型(也叫显示原型)。每个对象都有一个proto,可称为隐式原型。
2.每个对象都有一个proto属性,指向创建该对象的函数的prototype。
object.__proto__ ===  Object.prototype  // 为 true
object.__proto__.__ proto __=== null (特例)

var fn = function(){}
fn.__proto__ === Function.prototype  // 为 true
fn.__proto__.__proto__ === Object.prototype // 为 true

var array = []
array.__proto__ === Array.prototype // 为 true
array.__proto__.__proto__ === Object.prototype // 为 true

true.__proto__ === Boolean.prototype // 为 true

var a = ‘我’
a.__proto__ === String.prototype

var b = 1
b.__proto__ === Number.prototype
-------------------------------------------------------

Function.__proto__ === Function.prototype // 为 true
Array.__proto__ === Function.prototype // 为 true
Object.__proto__ === Function.prototype // 为 true
String.__proto__ === Function.prototype
Number.__proto__ === Function.prototype

Function.prototype.__proto__ === Object.prototype // 为 true
String.prototype.__proto__ === Object.prototype
Number.prototype.__proto__=== Object.prototype
Array.prototype.__proto__=== Object.prototype
Boolean.prototype.__proto__=== Object.prototype
String.prototype.__proto__ === Object.prototype
Object.prototype.__proto__ === null
image.png
--------------------------------------------

三、js中的继承是通过原型链来体现的

image.png

以上代码中,f1是Foo函数new出来的对象,f1.a是f1对象的基本属性,f1.b是怎么来的呢?——从Foo.prototype得来,因为f1.proto指向的是Foo.prototype

访问一个对象的属性时,先在基本属性中查找,如果没有,再沿着proto这条链向上找,这就是原型链。

区分一个属性是自由属性还是从原型链中即成的,用hasOwnProperty

image.png

那么其中hasOwnProperty既不是在f1的本身 也不是在Foo.prototype中,而是在Object.prototype中

Foo.prototype__proto__ === Object.prototype
image.png
由于所有的对象的原型链都会找到Object.prototype,因此所有的对象都会有Object.prototype的方法。这就是所谓的“继承”。

相关文章

  • JS的原型和闭包(4-6)

    原文地址: https://www.cnblogs.com/wangfupeng1988/p/3979290.ht...

  • 前端开发必须知道的JS(一) 原型和继承(转载)

    前端开发必须知道的JS(一) 原型和继承 原型和闭包是Js语言的难点,此文主要讲原型及原型实现的继承,在(二)中会...

  • 5-1 从基础知识到JSWebAPI

    回顾js基础知识 JS-web-API 总结 回顾js基础知识 变量类型和计算 原型和原型链 闭包与作用域 异步和...

  • JS-Web-Api

    JS基础知识,规定语法(ECMA262标准); 变量类型和计算 原型和原型链 作用域和闭包 异步和同步 JS We...

  • javascript面试准备(一)

    interview js 基础 原型 原型链 作用域 闭包 异步 单线程 js Api dom 操作 ajax 事...

  • 6.js-Web-API-DOM、BOM

    js基础知识:基于ECMA 262标准(规定基础语法、规则) --变量类型和计算--原型和原型链--闭包和作用域-...

  • php之闭包函数(Closure)

    php闭包函数(Closure) JS闭包 js和php闭包使用和区别

  • JS博客

    JS构造函数及new运算符 JS原型对象和原型链 函数作用域和作用域链 干货分享:让你分分钟学会JS闭包 深入理解...

  • js原型和闭包(10)——this

    其实,this的取值,分四种情况。我们来挨个看一下。 在此再强调一遍一个非常重要的知识点:在函数中this到底取何...

  • 原型链

    原型链 this指向 作用域和预解析 new关键字 闭包 继承 JS 规定,所有对象都有自己的原型对象(proto...

网友评论

      本文标题:JS的原型和闭包(4-6)

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