JavaScript中的new的使用方法与注意事项
JavaScript方法 使用 注意事项 New
2023-06-13 09:13:56 时间
http://yuiblog.com/blog/2006/11/13/javascript-we-hardly-new-ya/
其实你永远不需要在JavaScript使用newObject()。用字面量的形式{}去取代吧。
同理,不要使用newArray(),而代之以字面量[]。JavaScript中的数组并不象Java中的数组那样工作的,使用类似Java的语法只会让你糊涂。
同理不用使用newNumber,newString,或者newBoolean。这些的用法只会产生无用的类型封装对象。就直接使用简单的字面量吧。
不要使用newFunction去创建函数对象。用函数表达式更好。比如:
frames[0].onfocus=newFunction(”document.bgColor="antiquewhite"”)
更好的写法是:
frames[0].onfocus=function(){document.bgColor=‘antiquewhite";};
第二种形式让脚本编译器更快的看到函数主体,于是其中的语法错误也会更快被检测出来。有时候程序员使用newFunction是因为他们没有理解内部函数是如何工作的。
selObj.onchange=newFunction(”dynamicOptionListObjects[”+
dol.index+”].change(this)”);
如果我们让用字符串做函数体,编译器不能看到它们。如果我们用字符串表达式做函数体,我们同样也看不到它们。更好的方式就是不要盲目编程。通过制造一个返回值为函数的函数调用,我们可以明确的按值传递我们想要绑定的值。这允许我们在循环中初始化一系列selObj对象。
selObj.onchange=function(i){
returnfunction(){
dynamicOptionListObjects[i].change(this);
};
}(dol.index);
直接对一个函数使用new永远不是一个好主意。比如,newfunction对构造新对象没有提供什么优势。
myObj=newfunction(){
this.type=‘core";
};
更好的方式是使用对象字面量,它更轻巧,更快捷。
myObj={
type:‘core"
};
假如我们需要创建的对象包含的方法需要访问私有变量或者函数,更好的方式仍然是避免使用new.
varfoo=newfunction(){
functionprocessMessages(message){
alert(”Message:”+message.content);
}
this.init=function(){
subscribe(”/mytopic”,this,processMessages);
}
}
通过使用new去调用函数,对象会持有一个无意义的原型对象。这只会浪费内存而不会带来任何好处。如果我们不使用new,我们就不用在对象链维护一个无用的prototype对象。所以我们可以用()来正确的调用工厂函数。
varfoo=function(){
functionprocessMessages(message){
alert(”Message:”+message.content);
}
return{
init:function(){
subscribe(”/mytopic”,this,processMessages);
}
};
}();
所以原则很简单:唯一应该要用到new操作符的地方就是调用一个古老的构造器函数的时候。当调用一个构造器函数的时候,是强制要求使用new的。有时候可以来new一下,有的时候还是不要了吧。
可以参考以下文章,英文的:http://msdn.microsoft.com/msdnmag/issues/07/05/JavaScript/default.aspx?loc=en#S6
相关文章
- 【说站】javascript中Array.join()方法如何使用
- MongoDB服务端JavaScript脚本使用方法
- 使用 JavaScript 调用 Linux 命令的实现方法(js调用linux命令)
- Javascript中eval函数的使用方法与示例
- JavaScript与C#Windows应用程序交互方法
- JavaScript加密解密7种方法总结分析
- javascript弹出窗口window.open使用方法以及参数说明分析篇
- 用Javascript同时提交多个Web表单的方法
- javascript中使用replaceAll()函数实现字符替换的方法
- 用方法封装javascript的new操作符(一)
- 关于JavaScript的with语句的使用方法
- JavaScriptcallapply使用JavaScript对象的方法绑定到DOM事件后this指向问题
- javascript的原生方法获取数组中的最大(最小)值
- JavaScript调用堆栈及setTimeout使用方法深入剖析
- JavaScript中访问节点对象的方法有哪些如何使用
- javascript利用apply和arguments复用方法
- javascript使用正则控制input输入框允许输入的值方法大全
- 使用JavaScript获取地址栏参数的方法
- javascript批量修改文件编码格式的方法
- JavaScript使用setInterval()函数实现简单轮询操作的方法
- JavaScript使用focus()设置焦点失败的解决方法
- 简单方法判断JavaScript对象为null或者属性为空