JavaScript中用new操作符创建对象的时候具体发生了啥过程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript中用new操作符创建对象的时候具体发生了啥过程相关的知识,希望对你有一定的参考价值。
var p=new main();这是实例化一个对象;var main=function();这是创建一个对象;
记住实例化执行顺序一定要在创建的对象后面;
因为new的时候,首先会查询是否存在这个对象;
var main=function(a,b)
this.a=a;
this.b=b;
this.ale();
main.prototype=
ale:function()
alert(this.a,this.b)
var a=1;
var b='main'
var p =new main (a,b);
当你new这个传参对象的时候首先查询是否有这个对象,然后开始查询有没有声明参数变量即a,b;然后将初始化整个对象,即执行一次mian对象。 参考技术A new对象发生了事情:
创建空对象
把this指向空对象
赋值
方法中的this指代 new 出来的对象。
当我我们用new操作符创建对象的时候,都发生了些什么?
//下面这段代码是javascript设计模式与开发实践上的一段代码
function Person( name ){
this.name = name;
};
Person.prototype.getName = function(){
return this.name;
};
var objectFactory = function(){
var obj = new Object(), // 从 Object.prototype 上克隆一个空的对象
Constructor = [].shift.call( arguments ); // 取得外部传入的构造器,此例是 Person
obj.__proto__ = Constructor.prototype; //手动将该对象指向正确的位置
var ret = Constructor.apply(obj,arguments)// 借用外部传入的构造器给 obj 设置属性
return typeof ret === ‘object‘?ret:obj;//确保构造器总是返回一个对象
}
var b = new Person(‘sven‘);//使用了new构造器创建出来的对象
var a = objectFactory( Person, ‘sven‘ );
// console.info(b.name)
console.log( a.name ); // 输出:sven
console.log( a.getName() ); // 输出:sven
console.log( Object.getPrototypeOf( a ) === Person.prototype ); // 输出:true
以上是关于JavaScript中用new操作符创建对象的时候具体发生了啥过程的主要内容,如果未能解决你的问题,请参考以下文章