美文网首页
JS基础原型与原型链

JS基础原型与原型链

作者: MajorDong | 来源:发表于2019-05-13 18:45 被阅读0次

1.全局对象window

ECMAscript规定全局对象叫做global,但是浏览器把window作为全局对象(浏览器先存在)
window就是一个哈希表,有很多属性。window的属性就是全局变量。
这些全局变量分为两种

  1. 一种是ECMAscript规定的
    • global.parseInt
    • global.parseFloat
    • global.Number
    • global.String
    • global.Boolean
    • global.Object

2.一种是浏览器自己加的属性

  • window.alert
  • window.prompt
  • window.comfirm
  • window.console.log
  • window.document
  • window.document.createElement
  • window.document.getElementById

又分为document文档的DOM属性api,和浏览器对象属性BOM

2.全局函数

var n1 = 1 
var n2 = new Number (1) // 包装对象

n1.toString
实际为
temp = new Number(n1)
temp.toString
n1和n2的区别内存不同,
n1.toString 产生一个临时的变量(stack内存)转化用为就没。
每次都是调用一个新的临时对象

object
var o1 = {} 
var o2 = new Object()

o1和o2没有区别 但o1 === o2 false 有各自的地址 heap内存

3. 公用属性藏在哪

所有对象都有toStringvalueOf属性,是否有必要给每个对象一个toStirng 和 valueOf呢?
明显不需要
JS就是把toSting和valueOf放在一个对象里(暂且叫做公用属性组成的对象)
然后让每一个对象的__proto__存储这个“公用属性
组成的地址”。

无代码prototype

JS通过window全局对象,将公用的属性和方法函数存储起来,不被垃圾回收,不写任何代码也有prototype。

4. 重要公式

注意大小写,number和Number是不同的

var 对象 = new 函数()
对象.__proto__ === 对象的构造函数.prototype

// 推论
var number = new Number()
number.__proto__ === Number.prototype

var function = new Function()
function.__proto__ === Function.prototype

var object = new Object()
object.__prototype__ === Object.prototype 

// 另外,所有的函数都是由Function构造出来的,所以
Number.__proto__ === Function.prototype //因为是Number是函数,是Function的实例
Function.__proto__ === Function.prototype
Object.__proto__ === Function.prototype //因为Function是Object的构造函数,此时将方法Object当作对象

Object.prototype.__proto__ 指向null
重要公式

相关文章

  • 廖雪峰JS小记

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

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

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

  • 5-1 从基础知识到JSWebAPI

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

  • js基础(三)

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

  • 原型和原型链

    今天发现一张特别好的图(↑↑↑上图↑↑↑),对原型和原型链的理解特别直观友好。 原型和原型链 基础储备:每个 JS...

  • JS基础原型与原型链

    1.全局对象window ECMAscript规定全局对象叫做global,但是浏览器把window作为全局对象(...

  • javascript面试准备(一)

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

  • JS基础—原型对象的那些事(一)

    首次发表在:JS基础—原型对象的那些事(一) 谈起js的基础,绕不过去的坎就是:原型链、作用域链、this(em....

  • JavaScript原型链

    js原型链 原型链是JS面向对象的基础非常重要 所有对象只有__proto__属性,而函数具有prototype属...

  • web前端面试之js继承与原型链(码动未来)

    web前端面试之js继承与原型链(码动未来) 3.2.1、JavaScript原型,原型链 ? 有什么特点? 每个...

网友评论

      本文标题:JS基础原型与原型链

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