JS使用new操作符创建对象的方法分析
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS使用new操作符创建对象的方法分析相关的知识,希望对你有一定的参考价值。
参考技术A 本文实例讲述了JS使用new操作符创建对象的方法。分享给大家供大家参考,具体如下:在编写js代码时,我们有时会需要使用函数来模拟java中的类,并用它来产生对象,在定义了一个构造函数之后我们需要使用new操作符来调用调用函数才能得到我们想要的对象。例如:
<script>
function
Constructor(name)
this.name
=
name
var
person1
=
Constructor("张三");//undefined
var
person2
=
new
Constructor("张三");//得到一个对象{name:"张三"}
console.log(person1);
console.log(person2);
</script>
运行结果:
如果我们不使用new操作符调用函数,就只会简单的执行函数,并把函数的返回值赋给person1,所以上面的例子中person1的值是undefined,.
如果我们使用new操作符调用构造函数,做了哪些事情呢?
1.构造函数没有返回值
使用new操作符调用函数,会隐式的创建一个对象(我们这里称这个对象为obj),这个对象obj是连接到构造函数的原型上的,即obj会继承构造函数原型上的属性方法,并且构造函数中的this也被绑定到了这个对象上,执行完成后这个对象会被作为返回值返回。
2.构造函数有返回值(这种情况比较少,至少我没用过)
new出来的值由返回值的prototype而定
例如:
function
Constructor(name)
this.name
=
name
return
this.name;
var
person
=
new
Constructor("123");//Constructor
name:
"123";Object,因为基本类型的prototype都是Object
function
Constructor(name)
this.name
=
name
return
new
String(this.name);
var
person
=
new
Constructor("123");//String
0:
"1",
1:
"2",
2:
"3",
length:
3,
[[PrimitiveValue]]:
"123",
console.log(person);
运行结果:
感兴趣的朋友可以使用在线html/CSS/javascript代码运行工具:http://tools.jb51.net/code/HtmlJsRun测试上述代码运行效果。
更多关于JavaScript相关内容还可查看本站专题:《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
您可能感兴趣的文章:用方法封装javascript的new操作符(一)浅谈javascript中new操作符的原理JS重学系列之聊聊new操作符js构造函数创建对象是否加new问题JavaScript中使用构造器创建对象无需new的情况说明JavaScript
三种创建对象的方法JS
创建对象(常见的几种方法)js中创建对象的几种方式示例介绍js创建对象的几种常用方式小结(推荐)js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)javascript的函数、创建对象、封装、属性和方法、继承
js 构造函数的返回值
js的构造函数
构造函数: 构造函数只是一些使用new操作符时被调用的函数 ----- 来自《你不知道的js》
new关键字
new操作符执行时进行的操作: (来自MDN new操作符)
- 创建一个空的简单JavaScript对象(即{});
- 链接该对象(即设置该对象的构造函数)到另一个对象 ;
- 将步骤1新创建的对象作为this的上下文 ;
- 如果该函数没有返回对象,则返回this
构造函数返回值
- 如果不写return -> 直接返回默认创建的新对象
function foo(){
var obj = {‘name‘: ‘kenan‘};
}
var result = new foo();
result; // ==> foo对象
- 如果返回this -> 直接返回默认创建的新对象
function foo(){
var obj = {‘name‘: ‘kenan‘};
return this;
}
var result = new foo();
result; // ==> foo对象
- 如果返回的是基本数据类型: 直接返回默认创建的新对象
function foo(){
var obj = {‘name‘: ‘kenan‘};
return 1000;
}
var result = new foo();
result; // ==> foo对象
- 如果返回到是对象 -> 直接把这个对象, 返回给外界, 外界接受到的就是这个函数内部返回的对象
function foo(){
var obj = {‘name‘: ‘kenan‘};
return obj;
// return [1,2,3] // 若是直接返回数组[1,2,3], result输出[1,2,3]
}
var result = new foo();
result; // ==> {‘name‘: ‘kenan‘}
以上是关于JS使用new操作符创建对象的方法分析的主要内容,如果未能解决你的问题,请参考以下文章