每个JS意见领袖都说扩展原生对象是一种不好的做法.但为什么?我们是否获得了性能?他们是否害怕有人以"错误的方式"做到这一点,并添加了可枚举的类型Object,几乎破坏了任何对象上的所有循环?
以TJ Holowaychuk的should.js为例.他增加了一个简单的getter来Object,一切工作正常(来源).
Object.defineProperty(Object.prototype, 'should', {
set: function(){},
get: function(){
return new Assertion(Object(this).valueOf());
},
configurable: true
});
Run Code Online (Sandbox Code Playgroud)
这真的很有道理.例如,可以扩展Array.
Array.defineProperty(Array.prototype, "remove", {
set: function(){},
get: function(){
return removeArrayElement.bind(this);
}
});
var arr = [0, 1, 2, 3, 4];
arr.remove(3);
Run Code Online (Sandbox Code Playgroud)
是否有任何反对扩展本机类型的论据?
我需要检查变量是否为null或是否所有空格或只是空白("").
我有以下,但它不起作用:
var addr;
addr = " ";
if (!addr) {
// pull error
}
Run Code Online (Sandbox Code Playgroud)
如果我执行以下操作,它可以工作:
if (addr) {
}?
Run Code Online (Sandbox Code Playgroud)
我需要的是像C#方法String.IsNullOrWhiteSpace(value).
我已经阅读了关于javascript trim的这个问题,带有正则表达式的答案.
然后我希望修剪去除Hello和World之间的内部空间.
function myFunction() {
alert("Hello World ".trim());
}
Run Code Online (Sandbox Code Playgroud)
EDITED
为什么我期待!?
废话!显然修剪不会移除内部空间!只有前导和尾随,这就是修剪工作的方式,那么这是一个非常错误的问题,我的道歉.
如何在Javascript中检查变量是否为空?抱歉这个愚蠢的问题,但我是Javascript的新手!
if(response.photo) is empty {
do something
else {
do something else
}
Run Code Online (Sandbox Code Playgroud)
response.photo来自JSON,它有时可能是空的,空数据单元格!我想检查一下它是否为空.
有什么用?
var flag = new Boolean(false);
Run Code Online (Sandbox Code Playgroud)
相比:
var flag = false;
Run Code Online (Sandbox Code Playgroud)
你什么时候实际使用new Boolean?
在Javascript中是否检查值是否为空且不是空字符串?我正在使用以下一个:
var data; //get its value from db
if(data != null && data != '') {
// do something
}
Run Code Online (Sandbox Code Playgroud)
但我想知道是否还有其他更好的解决方案.谢谢.
当我想检查页面中是否存在元素时.这两个检查是否相同?有没有更好的更紧凑的方式来检查存在?
如果我要检查value == ''.这也可以包含在此检查中吗?
哪个更有效的编译器和检查字符串是否为空的最佳实践?
此外,答案是否取决于语言?
与此问题相关.我可以检查DOM中的元素是否有值?我试图将其置于'if'语句中,并且不确定我的方法是否正确.开始:
if (document.getElementById('customx')){
//do something
}
Run Code Online (Sandbox Code Playgroud)
或者应该是:
if (document.getElementById('customx') == ""){
//do something
}
Run Code Online (Sandbox Code Playgroud)
编辑:我的意思是,值customx是一个文本输入框.如何检查此字段是否未输入文本.
javascript ×9
jquery ×3
dom ×2
html ×2
string ×2
boolean ×1
optimization ×1
prototype ×1
trim ×1