我昨天发现了js的一些奇怪问题,当用new操作符创建自己的对象时。不知有人知道原因吗?
1、我们可以用function创建构造函数,然后用new生成自己的对象。
function book(){
this.tip="I'm a book";
}
var myBook = new book();
上面代码没什么疑问,会生成一个新的对象,myBook来引用它,这个对象有一个属性tip,值为"I'm a book"
2、当我们在构造函数中加入返回语句时
function book(){
this.tip="I'm a book";
return {};
}
var myBook = new book();
上面在构造函数的最后返回了一个空对象,这时的myBook就是一个空对象,不拥有任何属性。‘this.tip="I'm a book"’就像没起作用。
3、当我们返回的是一个字符串字面量时(数字也可以)
function book(){
this.tip="I'm a book";
return "I'm a string";
}
var myBook = new book();
按道理推测,这时的myBook就该引用的是字符串对象"I'm a string",但事实上是myBook和1中的一样,引用了一个对象,该对象有一个属性tip,值为"I'm a book",这时的return为什么没用了
。
4、当我们以另一种方式返回一个字符串时(数字一样)
function book(){
this.tip="I'm a book";
return new String("I'm a string");
}
var myBook = new book();
这时的myBook引用的就是字符串"I'm a string",这个和3中有什么不同?
所以,我想知道new操作符做了些什么,机制又是如何的?
分享到:
相关推荐
本文章主要讲述了用new创建类对象和直接定义类对象的区别与联系,很好地阐述了二者的关系。
如下所示: 代码如下: var person...上面的例子创建了一个名为person的对象,并为它添加了三个属性(name、age和job)和一个方法(sayName())。其中,sayName()方法用于显示this.name()的值。早期的JavaScript开发人员
《在VS2008中创建自定义控件(九)添加属性》(http://blog.csdn.net/smallfools/archive/2010/06/02/5642275.aspx)中用到的源文件
本文实例讲述了JS自定义对象创建与简单使用方法。分享给大家供大家参考,具体如下: <html> <head> <title>js自定义函数</title> <meta charset="UTF-8"/> [removed] //创建...
内容提要 • 使用构造方法 • 初始化数据 • 对象和内存 • 资源管理 派生类 • 实现方法 • Sealed类 • 使用接口 • 使用抽象类
java使用new来创建对象
在C++用new创建对象和不用new创建对象是有区别的,不知你是否清楚的了解它们到底有什么样的区别呢?下面小编就用示例来告诉大家吧,需要的朋友可以过来参考下
您可以用自己的 XML 配置元素来扩展标准的 ASP.NET 配置设置集。若要完成该操作,您必须创建自己的配置节处理程序。 app.config ,CustomConfigSectionTest" /> 注:section.type="path,程序...
C++大学课本中非常实用又非常难理解的动态创建对象,我做了个简单的实例供大家参考学习
JQ中发现的,jQuery.Event类。估计作者是为了减少代码量。定义一个类,但不用new关键字去创建该类对象,而使用方法调用()方式去创建该对象。
用new Object创建对象 1.创建对象的方式 创建对象 利用构造函数创建对象 使用构造函数创建对象的语法为“new 构造函数名()”,在小括号中可以传递参数给构造函数,如果没有参数,小括号可以省略。 1.创建对象的方式 ...
本文主要跟大家介绍的是关于laravel通过创建自定义artisan make命令来新建类文件的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 我们在laravel开发时经常用到artisan make:...
Java和C++都是面向对象的编程语言,然而Java和C++在创建对象时却存在不同的方式,由于方式的不同导致在内存中管理的不同。这篇文章主要给大家介绍了关于Java和C++通过new创建对象区别的相关资料,需要的朋友可以参考...
1.new Object() 2.字面量创建对象 构造函数创建对象 工厂模式
本文实例讲述了JavaScript面向对象程序设计创建对象的方法。分享给大家供大家参考,具体如下: 面向对象的语言具有一个共同的标志,那就是具有“类”的概念,但是在javascript中没有类的概念,在js中将对象定义为...
不使用NEW运算符如何创建JS对象解法利用字面量利用JavaScript内置对象apilet e = Object.create(null);利用装箱转换let
本文实例讲述了PHP使用new StdClass()创建空对象的方法。分享给大家供大家参考,具体如下: PHP可以用 $object = new StdClass(); 创建一个没有成员方法和属性的空对象。 很多时候,程序员们会将一些参数配置项之类...
主要介绍了JS使用new操作符创建对象的方法,结合实例形式分析了javascript面向对象程序设计类的定义、new操作符对象的创建及相关操作注意事项,需要的朋友可以参考下