new 关键字原理

简介: new 关键字原理,重写new
  1. 创建一个空对象
  2. 将该空对象的原型设置为构造函数的原型
  3. 以该对象的上下文执行构造函数
  4. 返回该对象(如果第三步有返回值则返回,没有则返回新对象)

function new (fn){

 if(typeof fn !== 'function'){

  throw 'need function'

 }

var Obj = Object.create(func.prototype)

 // 获取其余参数

 var args = [].slice.call(arguments,1)

 var objson = fn.apply(Obj,args)

 if(typeof objson === 'object' || typeof objson === 'function'){

  return objson

 }

  return Obj

}

Object.create()

####方案一

Object.create = function (obj){

return {'__proto__': obj}

}



###方案二

Object.create = function (obj){

function Fn(){}

 Fn.prototype = obj

 return new Fn()

}


相关文章
|
7月前
|
C#
30.C# 关键字 this初步学习
30.C# 关键字 this初步学习
42 1
|
7月前
|
自然语言处理 JavaScript 前端开发
解释`this`关键字在函数调用中的工作原理。
解释`this`关键字在函数调用中的工作原理。
30 0
|
19天前
|
存储 前端开发 JavaScript
前端:new关键字的作用
在JavaScript中,`new`关键字用于创建构造函数或类的新实例。使用`new`时,会自动创建一个空对象,并将其绑定到函数内的`this`,执行构造函数中的代码后返回该对象。这使得对象可以继承构造函数的属性和方法。
|
1天前
|
安全 编译器 C++
C++ `noexcept` 关键字的深入解析
`noexcept` 关键字在 C++ 中用于指示函数不会抛出异常,有助于编译器优化和提高程序的可靠性。它可以减少代码大小、提高执行效率,并增强程序的稳定性和可预测性。`noexcept` 还可以影响函数重载和模板特化的决策。使用时需谨慎,确保函数确实不会抛出异常,否则可能导致程序崩溃。通过合理使用 `noexcept`,开发者可以编写出更高效、更可靠的 C++ 代码。
7 0
|
2月前
|
开发框架 Cloud Native .NET
10 个 C# 关键字和功能
10 个 C# 关键字和功能
58 8
|
3月前
|
存储 缓存 Java
volatile关键字最全原理剖析
【9月更文挑战第27天】`volatile` 是一个用于修饰变量的关键字,告知编译器被修饰的变量可能在程序控制流之外被改变。在多线程环境下,`volatile` 确保变量的值每次从内存中读取,保持最新状态,但不能解决所有同步问题。在硬件交互中,`volatile` 用于内存映射的 I/O 操作,确保读取最新值。不同编程语言如 C/C++ 和 Java 中的 `volatile` 用法略有差异,但都是处理易变变量的重要工具。
|
7月前
|
缓存 Java
5个案例和流程图让你从0到1搞懂volatile关键字
5个案例和流程图让你从0到1搞懂volatile关键字
|
存储 编译器 C#
C#关键字相关面试题
C#关键字相关面试题
|
7月前
|
存储 编译器 C#
C#关键字常见面试题
C#关键字常见面试题
|
SQL Dart 小程序
C#using关键字的使用方法
这里记录下C#中using关键字的使用方法。 Using的使用大致分别以下三种:
70 0