博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript new对象的四个过程
阅读量:6863 次
发布时间:2019-06-26

本文共 1030 字,大约阅读时间需要 3 分钟。

new 一个对象

function Person(name, age) {  	this.name = name;  	this.age = age;   }  var person = new Person("hellen", 23);

 

1、创建一个空对象

var obj = new Object();

2、让Person中的this指向obj,并执行Person的函数体

var result = Person.apply(obj,arguments);

3、设置原型链,将obj的__proto__成员指向了Person函数对象的prototype成员对象

obj.__proto__ = Person.prototype;

4、判断Person的返回值类型,如果是值类型,返回obj。如果是引用类型,就返回这个引用类型的对象。

if (typeof(result) == "object") 	person = result;  else	person = obj;

 

function Person (name, age) {  this.name = name;  this.age = age;}Person.prototype.sayName = function () {  console.log(this.name);};var person = new Person('Hellen', 23);person.sayName();console.log(person instanceof Person);function New () {  let obj = new Object();  let fn = [].shift.call(arguments);  let args = arguments;  var ret = fn.apply(obj, args);  obj.__proto__ = fn.prototype;  return typeof ret === 'object' ? ret : obj;}let person1 = New(Person, 'Bob', 23);person1.sayName();console.log(person1 instanceof Person);

  

 

转载于:https://www.cnblogs.com/xiaosongJiang/p/11005193.html

你可能感兴趣的文章
[C++基础]010_C函数的古老定义方式(K&R style definition)
查看>>
lstm caffe几个变量的含义
查看>>
路由器如何当交换机使用
查看>>
多线程知识点整理
查看>>
BZOJ 2844 albus就是要第一个出场 ——高斯消元 线性基
查看>>
BZOJ 2946 [Poi2000]公共串 ——后缀自动机
查看>>
命令模式-3.撤销与重做的实现
查看>>
架构师之路--应用架构的选型和dubbo
查看>>
JAVA学习--子类对象实例化的全过程
查看>>
Python学习过程(二)
查看>>
[解题报告]HDU 1005 Number Sequence
查看>>
725. Split Linked List in Parts
查看>>
Android对象类系列化public class User implements Parcelable
查看>>
jq插件
查看>>
从零开始学习Sencha Touch MVC应用之十八
查看>>
博客园是不是应该取消反对按钮或者改进反对按钮
查看>>
重写equals()方法时,需要同时重写hashCode()方法
查看>>
Excel打印质量引起的异常及解决方案
查看>>
2.GET与POST的区别
查看>>
tyvj1172自然数拆分
查看>>