eye*_*ess 81 javascript language-features syntactic-sugar
这里有一些宝石:
文字:
var obj = {}; // Object literal, equivalent to var obj = new Object();
var arr = []; // Array literal, equivalent to var arr = new Array();
var regex = /something/; // Regular expression literal, equivalent to var regex = new RegExp('something');
Run Code Online (Sandbox Code Playgroud)
默认值:
arg = arg || 'default'; // if arg evaluates to false, use 'default', which is the same as:
arg = !!arg ? arg : 'default';
Run Code Online (Sandbox Code Playgroud)
当然我们知道匿名函数,但能够将它们视为文字并在现场执行它们(作为闭包)很棒:
(function() { ... })(); // Creates an anonymous function and executes it
Run Code Online (Sandbox Code Playgroud)
问题: javascript中有哪些其他优秀的语法糖?
Chr*_*Noe 58
获取当前日期时间为毫秒:
Date.now()
Run Code Online (Sandbox Code Playgroud)
例如,要为执行一段代码计时:
var start = Date.now();
// some code
alert((Date.now() - start) + " ms elapsed");
Run Code Online (Sandbox Code Playgroud)
Chr*_*Noe 33
对象成员测试:
var props = { a: 1, b: 2 }; ("a" in props) // true ("b" in props) // true ("c" in props) // false
Chr*_*Noe 26
在Mozilla(以及据称IE7)中,您可以使用以下命令创建XML常量:
var xml = <elem></elem>;
您也可以替换变量:
var elem = "html"; var text = "Some text"; var xml = <{elem}>{text}</{elem}>;
Ash*_*Ash 26
使用匿名函数和闭包来创建私有变量(信息隐藏)和相关的get/set方法:
var getter, setter;
(function()
{
var _privateVar=123;
getter = function() { return _privateVar; };
setter = function(v) { _privateVar = v; };
})()
Run Code Online (Sandbox Code Playgroud)
ste*_*e_c 22
能够通过原型继承扩展本机JavaScript类型.
String.prototype.isNullOrEmpty = function(input) {
return input === null || input.length === 0;
}
Run Code Online (Sandbox Code Playgroud)
pra*_*c84 21
调整数组长度的大小
length属性不是只读的.您可以使用它来增加或减少数组的大小.
var myArray = [1,2,3];
myArray.length // 3 elements.
myArray.length = 2; //Deletes the last element.
myArray.length = 20 // Adds 18 elements to the array; the elements have the empty value. A sparse array.
Run Code Online (Sandbox Code Playgroud)
J c*_*J c 16
通过在空数组上利用join方法,重复一个字符串,如" - "特定次数:
var s = new Array(repeat+1).join("-");
Run Code Online (Sandbox Code Playgroud)
当重复== 3时,结果为"---".
Ski*_*ick 15
与默认运算符一样,||
是守护运算符&&
.
answer = obj && obj.property
Run Code Online (Sandbox Code Playgroud)
而不是
if (obj) {
answer = obj.property;
}
else {
answer = null;
}
Run Code Online (Sandbox Code Playgroud)
Ser*_*sen 13
var tags = {
name: "Jack",
location: "USA"
};
"Name: {name}<br>From {location}".replace(/\{(.*?)\}/gim, function(all, match){
return tags[match];
});
Run Code Online (Sandbox Code Playgroud)
字符串替换的回调非常有用.
Jon*_*nan 11
function Foo(bar)
{
this._bar = bar;
}
Foo.prototype =
{
get bar()
{
return this._bar;
},
set bar(bar)
{
this._bar = bar.toUpperCase();
}
};
Run Code Online (Sandbox Code Playgroud)
给我们:
>>> var myFoo = new Foo("bar");
>>> myFoo.bar
"BAR"
>>> myFoo.bar = "Baz";
>>> myFoo.bar
"BAZ"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11839 次 |
最近记录: |