浅谈javascript中new操作符的原理


Posted in Javascript onJune 07, 2016

javascript中的new是一个语法糖,对于学过c++,java 和c#等面向对象语言的人来说,以为js里面是有类和对象的区别的,实现上js并没有类,一切皆对象,比java还来的彻底

new的过程实际上是创建一个新对象,把新象的原型设置为构造器函数的原型,在使用new的过程中,一共有3个对象参与了协作,构造器函数是第一个对象,原型对象是二个,新生成了一个空对象是第三个对象,最终返回的是一个空对象,但这个空对象不是真空的,而是已经含有原型的引用(__proto__)

步骤如下:

(1) 创建一个空对象obj

(2) 让空对象的__proto__(IE没有该属性)成员指向了构造函数的prototype成员对象

(3) 使用apply调用构造器函数,this绑定到空对象obj上。

(4) 返回空对象obj

浅谈javascript中new操作符的原理

可以自己写个函数替代使用new也是完全可以的,示例代码如下:

function NEW_OBJECT(Foo){

var obj={};
obj.__proto__=Foo.prototype;
obj.__proto__.constructor=Foo;
Foo.apply(obj,arguments)
return obj;

}

以上这篇浅谈javascript中new操作符的原理就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery与iframe交互实现代码
Dec 24 Javascript
dess中一个简单的多路委托的实现
Jul 20 Javascript
jquer之ajaxQueue简单实现代码
Sep 15 Javascript
js控制frameSet示例
Sep 10 Javascript
使用javascript做的一个随机点名程序
Feb 13 Javascript
JavaScript调用客户端Java程序的方法
Jul 27 Javascript
原生js与jQuery实现简单的tab切换特效对比
Jul 30 Javascript
js实现四舍五入完全保留两位小数的方法
Aug 02 Javascript
JS实现unicode和UTF-8之间的互相转换互转
Jul 05 Javascript
对angularJs中$sce服务安全显示html文本的实例
Sep 30 Javascript
详解微信小程序图片地扯转base64解决方案
Aug 18 Javascript
vue mvvm数据响应实现
Nov 11 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
Jun 07 #Javascript
jQuery原理系列-常用Dom操作详解
Jun 07 #Javascript
浅析BootStrap栅格系统
Jun 07 #Javascript
浅谈jQuery 选择器和dom操作
Jun 07 #Javascript
BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法
Jun 07 #Javascript
DOM操作和jQuery实现选项移动操作的简单实例
Jun 07 #Javascript
Knockoutjs 学习系列(二)花式捆绑
Jun 07 #Javascript
You might like
用PHPdig打造属于你自己的Google[图文教程]
2007/02/14 PHP
MYSQL 小技巧 -- LAST_INSERT_ID
2009/11/24 PHP
Windows2003下php5.4安装配置教程(Apache2.4)
2016/06/30 PHP
PHP代码覆盖率统计详解
2020/07/22 PHP
JS backgroundImage控制
2009/05/19 Javascript
学习并汇集javascript匿名函数
2010/11/25 Javascript
关于IE中getElementsByClassName不能用的问题解决方法
2013/08/26 Javascript
Javascript Object 对象学习笔记
2014/12/17 Javascript
tuzhu_req.js 实现仿百度图片首页效果
2015/08/11 Javascript
js实现带圆角的多级下拉菜单效果
2015/08/28 Javascript
JS弹性运动实现方法分析
2016/12/15 Javascript
vue 配置多页面应用的示例代码
2018/10/22 Javascript
原生js实现抽奖小游戏
2019/06/27 Javascript
Vue实现计算器计算效果
2020/08/17 Javascript
分享15个最受欢迎的Python开源框架
2014/07/13 Python
Python字符串逐字符或逐词反转方法
2015/05/21 Python
尝试用最短的Python代码来实现服务器和代理服务器
2016/06/23 Python
分享几道你可能遇到的python面试题
2017/07/24 Python
Python入门之三角函数atan2()函数详解
2017/11/08 Python
Tensorflow环境搭建的方法步骤
2018/02/07 Python
python opencv之SURF算法示例
2018/02/24 Python
Python字符串逆序的实现方法【一题多解】
2019/02/18 Python
基于zepto的插件之移动端无缝向上滚动并上下触摸滑动实例代码
2016/12/20 HTML / CSS
NUK奶瓶美国官网:NUK美国
2016/09/26 全球购物
一级方程式赛车官方网上商店:F1 Store(支持中文)
2018/01/12 全球购物
波兰灯具、照明和LED购物网站:Lampy.pl
2019/03/11 全球购物
一道SQL面试题
2012/12/31 面试题
后勤部长岗位职责
2013/12/14 职场文书
授权委托书格式模板
2014/04/03 职场文书
补充协议书范本
2014/04/23 职场文书
2014年仓库工作总结
2014/11/20 职场文书
舌尖上的中国观后感
2015/06/02 职场文书
合同审查法律意见书
2015/06/04 职场文书
python常见的占位符总结及用法
2021/07/02 Python
mysql 索引合并的使用
2021/08/30 MySQL
Tomcat 与 maven 的安装与使用教程
2022/06/16 Servers