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()

}


相关文章
|
8月前
|
C#
30.C# 关键字 this初步学习
30.C# 关键字 this初步学习
47 1
|
22天前
|
安全 编译器 C++
C++ `noexcept` 关键字的深入解析
`noexcept` 关键字在 C++ 中用于指示函数不会抛出异常,有助于编译器优化和提高程序的可靠性。它可以减少代码大小、提高执行效率,并增强程序的稳定性和可预测性。`noexcept` 还可以影响函数重载和模板特化的决策。使用时需谨慎,确保函数确实不会抛出异常,否则可能导致程序崩溃。通过合理使用 `noexcept`,开发者可以编写出更高效、更可靠的 C++ 代码。
28 0
|
3月前
|
开发框架 Cloud Native .NET
10 个 C# 关键字和功能
10 个 C# 关键字和功能
72 8
|
4月前
|
存储 缓存 Java
volatile关键字最全原理剖析
【9月更文挑战第27天】`volatile` 是一个用于修饰变量的关键字,告知编译器被修饰的变量可能在程序控制流之外被改变。在多线程环境下,`volatile` 确保变量的值每次从内存中读取,保持最新状态,但不能解决所有同步问题。在硬件交互中,`volatile` 用于内存映射的 I/O 操作,确保读取最新值。不同编程语言如 C/C++ 和 Java 中的 `volatile` 用法略有差异,但都是处理易变变量的重要工具。
|
SQL Dart 小程序
C#using关键字的使用方法
这里记录下C#中using关键字的使用方法。 Using的使用大致分别以下三种:
76 0
|
存储 编译器 Linux
C++必知必会之基础知识-常用关键字(1)
大家好,我是Linux兵工厂,在工作经常发现小伙伴们遇到一些C++的问题都是对基础知识不熟悉或理解混乱所导致的。正所谓万丈高楼平地起,作为一名合格的程序员来说,没有良好的基本功很难达到一定的高度。而工作中大部分编程问题都是基本功不扎实所导致,所以决定花些时间来整理C++相关的基本知识和基本概念供大家参考理解。 关注公众号:Linux兵工厂,领取海量Linux免费学习资料,且会不定时输出更多干货知识
|
SQL
基础关键字
基础关键字
96 0
|
PHP 开发者
Self 关键字|学习笔记
快速学习 Self 关键字
Self 关键字|学习笔记
|
数据库 开发者 Python
With 关键字的使用 | 学习笔记
快速学习 With 关键字的使用
With 关键字的使用 | 学习笔记