当前位置:首页 > 日记 > 正文

学习笔记的Javascript函数文本(五):构造函数

学习笔记的Javascript函数文本(五):构造函数
Javascript中的构造函数也与其他语言不同。任何新关键字调用的函数都可以用作构造函数。

在构造函数体中,这指向新创建的对象。如果构造函数没有返回在主体中显示的表达式,则我们默认返回这个,这是新对象。

复制代码代码如下所示:

函数(){

this.bla = 1;

}

foo.prototype.test =函数(){

(这console.log。BLA);

};

var测试=新富();
上面的代码调用foo作为构造函数和点的原型(__proto__)的新对象foo.prototype。

如果我们在构造函数中定义返回的返回表达式,构造函数将返回整个表达式,但是这个返回表达式必须是一个对象。

复制代码代码如下所示:

函数条(){

返回2;

}

新建(bar);一个新对象

函数测试(){

this.value = 2;

返回{

食品:1

};

}

新的(测试);返回的对象
如果省略了新函数,那么函数将不会返回到一个新对象。

复制代码代码如下所示:

函数(){

this.bla = 1; / /被设置在全局对象

}

(富);未定义的
上述示例也可能在某些场景中运行,但由于Javascript中的这种工作机制,这将指向全局对象。

工厂模式

为了不使用关键字new,构造函数必须显示一个值的返回值。

复制代码代码如下所示:

函数条(){

var值= 1;

返回{

方法:函数(){

返回值;

}

}

}

bar.prototype = { {

符:(函数){ }

};

新酒吧();

(酒吧);
在这个例子中,新调用的bar函数实现的效果是一样的,对象将返回一个新的方法,包括方法,这里实际上是一个闭包。

需要指出,新的酒吧()不会返回bar.prototype,但原型对象的函数在返回表达式。

在这个例子中,使用新的函数是否有差异。

通过工厂模式创建新对象

我们经常被提醒不要使用新的,因为一旦忘记它就会导致错误。

为了创建一个对象,我们更愿意使用工厂模式,并在工厂模式中构建一个新对象。

复制代码代码如下所示:

函数(){

var obj = { };

obj.value = 'blub;

VaR的私人= 2;

obj.somemethod =函数(值){

this.value =价值;

}

obj.getprivate =函数(){

回归民间;

}

返回对象;

}
虽然这种代码比使用新的错误容易得多,但在使用私有变量时也会比较方便,但也有一些不错的地方:

因为不能共享原型对象,所以需要更多内存。

为了继承,工厂模式需要复制另一个对象的所有方法,或者使用它作为新对象的原型。

放弃原型链只是为了避免使用新的,这似乎违背了Javascript语言的精神。
总结

虽然使用新的可能更容易产生错误,但这并不是放弃使用原型链的原因,至于最后的方法是什么,这取决于应用程序的需求,最好的方法是选择一种风格并坚持下去。

简单地说,构造函数是初始化一个实例对象,对象的原型属性是继承一个实例对象。

相关文章

教你用焰火和涂鸦来制作砖墙效果。

教你用焰火和涂鸦来制作砖墙效果。

砖墙,焰火,涂鸦,教你用,效果,本教程是介绍用红砖制作的烟花,你可以画画。教程简单有趣,我相信每个人都喜欢它。 本教程是介绍用红砖制作的烟花,你可以画画,教程简单有趣,我相信每个人都喜欢它! 最终效果: 1。首先建立一个800高310的文件(我这样做…

连接ODBC数据源并保存和查询数据的

连接ODBC数据源并保存和查询数据的

数据,查询,数据源,方法,连接,本文演示PHP如何连接ODBC数据源,并保存和查询数据,供大家参考。 具体实现代码如下: 复制代码代码如下所示: connstr美元=司机=微软Access Driver(* .mdb);DBQ = 。Realpath(数据库.mdb); connid美元= odbc_connect($ c…

Javascript使用appendChild添加节点实例

Javascript使用appendChild添加节点实例

添加节点,实例,电脑软件,Javascript,appendChild,本文阐述了使用appendChild节点添加到Javascript的方法。分享给你供你参考。具体分析如下: DOM树节点增加了,示例代码如下所示: 复制代码代码如下所示: 函数t(){ 无功nodep = document.createelement…

ThinkPHP3.0输出方案的重复两次

ThinkPHP3.0输出方案的重复两次

输出方案,两次,电脑软件,本文讲述了一个解决方案的输出两ThinkPHP3.0重复。分享给你供你参考。具体方法如下: 主输入文件如下所示: 复制代码代码如下: 定义('app_name ','admin '); / /定义项目名称 定义('app_path '、'。 /行政/ '); / …

ps如何制作背景模糊PS照片背景虚拟

ps如何制作背景模糊PS照片背景虚拟

虚拟,模糊,照片,教程,背景,本教程是向朋友介绍PS如何使背景模糊。本教程是比较基础的。非常适合初学者学习。推荐朋友一起学习。 姐纸是自爱,有时自己很成功,但总是有背景不和谐,让人看网上不是很好,我有一个自己拍内衣,面对这种情况呢如何使背…

PS图象处理软件合成中式水墨舞蹈艺

PS图象处理软件合成中式水墨舞蹈艺

水墨,图象,处理软件,舞蹈,艺术,本教程介绍朋友关于PS图象处理软件合成的中国古典水墨艺术图的使用。这门课的效果真的很好。建议喜欢的朋友可以随本教程学习。 中国古典风格的图片更难,尤其是水墨画。要有中国风的图片有深刻的理解。在合成…

PS绘制美丽透明的气泡效果

PS绘制美丽透明的气泡效果

气泡,绘制,透明,效果,美丽,本教程是向朋友介绍如何使用PS绘制美丽透明的气泡效果。画画的效果很美,难度也不大。建议你喜欢你的朋友一起学习。 今天,如何用PS来画出一个漂亮透明的泡泡效果,实践很简单,想学的朋友可以看看: 1、首先打开PS软件,新5…

在周期的JS之间的差异分析和java中

在周期的JS之间的差异分析和java中

循环,周期,差异,电脑软件,java,本文分析了周期和JS之间在java foreach循环差。分享给你供你参考。具体分析如下: js中的for循环定义如下: 复制代码代码如下:对(OBJ VAR变量){…} 对象可以是一个普通的JS对象或数组。如果obj是一个JS对象变量,…

一个好的HTML5画布多点击事件监视

一个好的HTML5画布多点击事件监视

监视器,多点,事件,实例,电脑软件,写一个多层点击事件的监视器,我认为它仍然很有趣,所以它把它从模块中取出,你喜欢的朋友可以参考它。 最近我为HTML5写了一个游戏框架,今天我写了一个多层点击事件的监视器,我觉得它仍然很有趣,所以它被从模块中…

assert.throwsMSTest实现功能相似

assert.throwsMSTest实现功能相似

单元测试,功能,测试,电脑软件,assert,我们做单元测试测试,并有一个断言断言。会是好的,但是当我们使用MSTest,你需要写这: 复制代码代码如下所示: {测试} { expectedexception(typeof(argumentnullexception))} 公共无效writetotextfile() { pdfutilit…

Javascript学习笔记数组的构造函数

Javascript学习笔记数组的构造函数

构造函数,数组,学习笔记,电脑软件,Javascript,数组的构造函数 由于数组构造器在处理参数不确定性中,强烈建议使用{符号}来创建一个新数组。 { 1, 2, 3 };结果:{ 1, 2, 3 } 新数组(1, 2, 3);结果:{ 1, 2, 3 } { 3 };结果:{ 3 } 新数组(3);结果:{ } 新的…

PS是如何产生闪电效应的

PS是如何产生闪电效应的

效应,闪电,电脑软件,PS,本文主要介绍PS如何制作闪电效果,和你喜欢的朋友一起学习。 资料图: 效果图: PS制作闪电效果教程: 1、先打开原图片素材,大家可以用我,也可以找一些帅气,真实的生活。 2,下一个是按钮,我这里不介绍这个方法,新手可以用过滤器…