美文网首页
全局对象,全局函数,原型链

全局对象,全局函数,原型链

作者: 吴一晏 | 来源:发表于2019-02-22 16:56 被阅读0次

全局对象

ECMAScript规定的全局对象叫global,浏览器把window作为全局对象(因为人家浏览器出的早啊)。
window是一个哈希表,有很多的属性。这些属性就叫做全局变量。
这些全局变量分为两种:
①:ECMAScript规定的

  • global.parseInt
  • global.parseFloat
  • global.Number
  • global.String
  • global.Boolean
  • global.Object
    ②:浏览器加的
  • window.alert
  • window.prompt
  • window.history
  • window.comfirm
  • window.console.log
  • window.console.dir
  • window.document
  • window.document.createElement
  • window.document.getElementById
    API的详细资料

全局函数。复杂类型和简单类型的区别

1.Number
var n = new Number(1) 创建一个 Number 对象
2.String
var s = new String('hello') 创建一个 String 对象
3.Boolean
var b = new Boolean(true) 创建一个 Boolean 对象
4.Object
var o1 = {}
var o2 = new Object()
那么1和new Number(1)有什么区别呢。1直接存储在stack里,new Number(1)则是作为一个对象,存储一个地址,指向一个对象。 String,Boolean同理。 但是上面对象o1和o2没有区别,但是o1和o2不相等。

var n1 = 1; n1在内存图中储存的只是一个number1,但是n1.toString() 显示结果为'1',n1不是对象,这结果是哪来的呢。 因为浏览器临时调用了一个变量,将这个变量的toString值当做n1的toString值,再讲这个变量消除。

公用属性,原型链

所有的对象都有toString,valueOf属性,是不是每个对象都有储存一个toString和valueOf呢?不是的。
JS 的做法是把 toString 和 valueOf 放在一个对象里(暂且叫做公用属性组成的对象),然后让每一个对象的__proto__存储这个「公用属性组成的对象」的地址。

每个实例对象(object )都有一个私有属性(称之为__proto__)指向它的原型对象(prototype)。该原型对象也有一个自己的原型对象(__proto__) ,层层向上直到一个对象的原型对象为 null。根据定义,null 没有原型,并作为这个原型链中的最后一个环节。几乎所有 JavaScript 中的对象都是位于原型链顶端的Object的实例。

重要公式!!!

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

//推导
var number = new Number()
number.__proto__ = Number.prototype
Number.__proto__ = Function.prototype // 因为 Number 是 Function 的实例

var object = new Object()
object.__proto__ = Object.prototype
Object.__proto__ = Function.prototype // 因为 Object 是 Function 的实例

var function = new Function()
function.__proto__ = Function.prototype
Function.__proto__ == Function.prototye // 因为 Function 是 Function 的实例!
Function.prototye.__proto__ = Object.prototype//Function.prototye是个对象

相关文章

  • js里面的对象

    全局对象window全局函数公共的属性藏在哪toSting哪来的-原型链 全局对象window ECMAScrip...

  • 全局对象,全局函数,原型链

    全局对象 ECMAScript规定的全局对象叫global,浏览器把window作为全局对象(因为人家浏览器出的早...

  • JavaScript内置对象(22)

    JavaScript内置对象 全局对象window 全局函数 公共属性隐藏在哪里 toString从哪里来(原型链...

  • 原型与原型链

    原型与原型链 全局对象window ECMAScript 规定全局对象叫做 global,但是浏览器把 windo...

  • this

    全局作用域中的this: 一般函数的this: 作为对象方法的this(常见): 对象原型链上的this: get...

  • 全局对象与原型链

    全局对象 在ECMA Script 标准中,全局对象叫做 global, 全局对象不一定是 window,但在浏览...

  • 函数声明方法

    为了避免多个函数类型的全局变量,可以采用对象(object)或者函数原型(prototype),例如: or : ...

  • 作用域链

    1.在函数创建时,它的作用域链中会填入一个全局对象,该全局对象包含了所有全局变量。2.函数执行时会创建一个称为“运...

  • JavaScript中this的一些应用场景

    1.全局环境中的this指向全局对象 2.对象内部函数的this指向调用函数的当前对象 3.全局环境函数的this...

  • 前端面试题整理-持续更新CSS,JS,React,http

    null是对象原型链的终点,null == undefinedundefined不是保留字,它只是全局对象的一个属...

网友评论

      本文标题:全局对象,全局函数,原型链

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