栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

新操作符如何在JavaScript中工作?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

新操作符如何在JavaScript中工作?

new
操作者使用内部
[[Construct]]
方法,它基本上具有下列功能:

  • 初始化新的本机对象
  • 设置
    [[Prototype]]
    此对象的内部,指向Function
    prototype
    属性。
    • 如果函数的
      prototype
      属性不是对象(则使用原始值,例如Number,String,Boolean,Undefined或Null)
      Object.prototype
  • 创建对象后,它将调用该函数,并提供对象作为其
    this
    值。
  • 如果被调用函数的返回值是原始值,则返回内部创建的对象。
  • 否则,如果返回对象,则内部创建的对象将丢失。

new
运算符的等效实现可以这样表示(假设ECMAscript 5
Object.create
方法可用):

function NEW(f) {  var obj, ret, proto;  // Check if `f.prototype` is an object, not a primitive  proto = Object(f.prototype) === f.prototype ? f.prototype : Object.prototype;  // Create an object that inherits from `proto`  obj = Object.create(proto);  // Apply the function setting `obj` as the `this` value  ret = f.apply(obj, Array.prototype.slice.call(arguments, 1));  if (Object(ret) === ret) { // the result is an object?    return ret;  }  return obj;}// Example usage:function Foo (arg) {  this.prop = arg;}Foo.prototype.inherited = 'baz';var obj = NEW(Foo, 'bar');obj.prop;          // 'bar'obj.inherited;     // 'baz'obj instanceof Foo // true


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/464579.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号