Sha*_*haz 1 javascript function-literal object-literal string-literals
更具体地说,您如何确定某个对象是否是使用文字创建的?
var s1 = new String();
var s2 = ""; // Literal
var o1 = new Object();
var o2 = {}; // Literal
var f1 = new Function();
var f2 = function(){}; // Literal
Run Code Online (Sandbox Code Playgroud)
显然,如果你比较上面的任何两个,例如:
var o1 = new Object();
var o2 = {};
alert(o1 == o2);
alert(o1 === o2);
alert(typeof o1);
alert(typeof o2);
Run Code Online (Sandbox Code Playgroud)
...前两个警报将显示,false而最后两个警报将显示[Object object]
比方说,如果我想这样做:
function isLiteral(obj, type) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
......怎么会这样做呢?
我已经看了如何确定一个对象是否是Javascript中的对象文字?,但它没有回答我的问题.
首先,这两行之间的区别:
var s1 = new String();
var s2 = ""; // Literal
Run Code Online (Sandbox Code Playgroud)
......以及这两行之间的区别:
var o1 = new Object();
var o2 = {}; // Literal
Run Code Online (Sandbox Code Playgroud)
......是两个不同的概念.
第一个是原始值和对象之间的差异,而第二个是...同一事物的不同语法.
字符串,数字和布尔值是原始值,不是对象,但可使用被包装为对象new String(),new Number()或new Boolean().所以对于这些,typeof将返回不同的值:
var s1 = new String();
typeof s1; // "object"
var s2 = "";
typeof s2; // "string"
Run Code Online (Sandbox Code Playgroud)
但是,对于Object和Function,区别在于:
var o1 = new Object();
var o2 = {};
Run Code Online (Sandbox Code Playgroud)
...仅限语法.
双方o1并o2具有相同的prototype,同样的constructor,这使得它们在运行时没有区别.
| 归档时间: |
|
| 查看次数: |
163 次 |
| 最近记录: |