JavaScript 的 new会发生什么

  1. 创建空对象;

    var obj = {};

  2. 设置新对象的constructor属性为构造函数的名称,设置新对象的proto 属性指向构造函数的prototype对象;

    obj.proto = ClassA.prototype;

    扩展了新对象的原型链。

  3. 使用新对象调用函数,函数中的this被指向新实例对象:

    ClassA.call(obj);  //{}.构造函数();

  4. 返回this指针。当存在显示的返回时,返回return后面的内容。新建的空对象作废。

javascript 复制代码
//创建了一个空对象obj;
var obj  = {};

//将这个空对象的__proto__成员指向了F函数对象prototype成员对象
obj.__proto__ = F.prototype;

//将F函数对象的this指针替换成obj,然后再调用F函数
F.call(obj);
javascript 复制代码
function test() {
	this.name = 'test';
}
test.prototype = {
	a: {},
	b: {}
};

var c = new test();
相关推荐
pingan878718 小时前
试试 docx.js 一键生成 Word 文档,效果很不错
开发语言·前端·javascript·ecmascript·word
big_rabbit050218 小时前
java面试题整理
java·开发语言
刺客xs18 小时前
c++模板
java·开发语言·c++
weixin_5375904518 小时前
《C程序设计语言》练习答案(练习1-5)
c语言·开发语言
阳光永恒73618 小时前
Python零基础入门全套资料包免费分享 | 从0到1系统学习路线(含课件+源码+实战案例)
开发语言·python·学习·编程入门·python教程·编程学习·免费资料
紫丁香18 小时前
pytest_自动化测试1
开发语言·python·功能测试·单元测试·pytest
2301_8184190118 小时前
C++中的状态模式实战
开发语言·c++·算法
独隅18 小时前
Python 标准库 (Standard Library) 全面使用指南
android·开发语言·python
yuzhuanhei19 小时前
C++进阶(上)
开发语言·c++
结网的兔子19 小时前
前端学习笔记——Element Plus 栅格布局系统示例
前端·javascript·css