new运算符工作原理(new运算符的伪码实现)
// 只要函数创建,就有一个prototype属性
// 构造函数和普通函数的区别就是调用的时候又没有用 new
function Fn() {
// this 就是实例化后的对象 三段式
var this = {
__proto__: Fn.prototype
};
this.XXX = XXX;
return this;
}
// 原型
Fn.prototype = {
// 浏览器自带
constructor: Fn() // 构造函数
__proto__:Object
};
obj->Fn.prototype->Object.prototype->null
//new运算符的伪码实现
function _new(clazz, args){
//clone(clazz.prototype)
var this = {};
this.__proto__ = clazz.prototype;
var obj = clazz.apply(this, args);
var type = typeof obj;
if(type == "object" && obj !== null || type == "function"){
return obj;
}else{
return this;
}
/* 另一种写法
if(obj === null || type == "undefined" || type == "boolean" || type == "number" || type == "string"){
return this;
}else{
return obj;
}
*/
}
var a = new ClassA(1,2);
var a = _new(ClassA, [1,2]); //伪码 来源:https://wmingjian.iteye.com/blog/1881658
create read update delete
create select update delete
new运算符工作原理(new运算符的伪码实现)的更多相关文章
- Java按位取反运算符“~”的工作原理
说明:本文参考了文章<Java按位取反运算符“~”>,链接:https://blog.csdn.net/smilecall/article/details/4245447 补充:位运算符( ...
- [史上最全]C#(VB.NET)中位运算符工作过程剖析(译)
原文地址CodeProject 目录 介绍 “二进制-十进制”相互转换 十进制->二进制 二进制->十进制 OR运算符(按位或|) OR运算符工作方式 FlagsAttribute AND ...
- JS原型链(二)--new运算符的原理
new运算符的原理: 第一步:创建一个空对象,该对象继承构造函数的原型对象 第二步:执行这个构造函数,并且把this指向该空对象 第三步:返回:如果构造函数执行后返回的结果是一个object类型,则返 ...
- new 运算符的原理
关于 new 运算符的原理: 1.红宝书上解释: (1)创建一个新对象 (2)将构造函数的作用域赋给新对象 (3)执行构造函数中的代码 (4)返回新对象 2.MDN上的解释: (1)一个继承自 Foo ...
- 虚函数列表: 取出方法 // 虚函数工作原理和(虚)继承类的内存占用大小计算 32位机器上 sizeof(void *) // 4byte
#include <iostream> using namespace std; class A { public: A(){} virtual void geta(){ cout < ...
- C语言杂谈(二)自增运算符++与间接访问运算符*的结合关系和应用模式
自增运算符++有前缀和后缀两种,在搭配间接访问运算符*时,因为顺序.括号和结合关系的影响,很容易让人产生误解,产生错误的结果,这篇文章来详细分析一下这几种运算符的不同搭配情况. ++.--和*的优先级 ...
- Ajax的工作原理以及优点、缺点 (汇总)
最近空闲时间,有朋友问我关于Ajax的工作原理,在这里我结合自己的工作经验和网上大佬的经验做一个总结,如有不足,请各位业内大佬指正 在我们了解Ajax之前,我们先来了解一下Javascript的执行原 ...
- C++虚函数工作原理
一.虚函数的工作原理 虚函数的实现要求对象携带额外的信息,这些信息用于在运行时确定该对象应该调用哪一个虚函数.典型情况下,这一信息具有一种被称为 vptr(virtual table poi ...
- JavaScript原型继承工作原理
原型继承的定义 当你阅读关于JS原型继承的解释时,你时常会看到以下这段文字: 当查找一个对象的属性时,JavaScript 会向上遍历原型链,直到找到给定名称的属性为止.——出自JavaScript秘 ...
随机推荐
- 用js实现摇一摇功能
function init(){ if (window.DeviceMotionEvent) { // 移动浏览器支持运动传感事件 window.addEventListener('devicemot ...
- T1387:搭配购买(buy)
[题目描述] Joe觉得云朵很美,决定去山上的商店买一些云朵.商店里有n朵云,云朵被编号为1,2,…...,n,并且每朵云都有一个价值.但是商店老板跟他说,一些云朵要搭配来买才好,所以买一朵云则与这朵 ...
- python学习笔记:try与except处理异常语句
写代码的时候会遇到各种各样的异常,那么代码就不会继续往下走了.比如说10除以0是错误的,因为除数不能为零学会捕捉异常,在异常出现的时候我们要做什么操作. 本文中只做简单使用的讲解,详细使用方法可以参考 ...
- 4.jmeter在线并发的怎样设置
4.1Jmeter 快速入门教程(一) - 认识jmeter和google插件 4.2Jmeter 快速入门教程(二)--创建简单web测试 打印 E-mail 4.3Jmeter 快速入门教程(三- ...
- Cocos2d-x打包安卓apk
| 版权声明:本文为博主原创文章,未经博主允许不得转载. 1. 下载安装安卓(android)环境 见http://www.cnblogs.com/geore/p/5793620.html,按照其 ...
- 什么是Kotlin?Java的替代语言?
什么是Kotlin Kotlin是一个基于JVM的新的编程语言,2010年由IntelliJ IDEA所在的JetBrains公司开发,自2012年以来一直开源. Kotlin可以编译成Java字节码 ...
- C++中的智能指针类模板
1,智能指针本质上是一个对象,这个对象可以像原生的指针一样使用,因为智能指 针相关的类通过重载的技术将指针相关的操作符都进行了重载,所以智能指针对象可以像原生指针一样操作,今天学习智能指针类模板,通过 ...
- Excel_PowerQuery——秒杀Vlookup的表合并
终于,Power Query的第二弹来了,距离上一次PQ更博,已经将近半年. Excel_PoweQuery——条件计数.条件求和 使用PQ进行表格数据的连接合并是一件畅快的事情. 下面的数据是我随机 ...
- NOIP后一波总结
我的山寨较为可靠分数为305(洛谷是真的水~显然不能用啊,果断换了一组合适的数据) 据大神们估计,得奖的分数在280, 我肯定是没有啥希望了.(我旁边的lxy同学从初二开始,每次以超分数线至少60分的 ...
- JS事件委托(事件代理,dom2级事件)
一.前言 说实话,真问我什么是事件委托,我肯定gg,还好查了一下,原来就是我之前练习过的DOM2级事件的应用. 二.什么是事件委托? 事件委托就是当事件触发时,把要做的事委托给父元素(或父元素的父元素 ...