為什麼JavaScript中var宣告的物件(使用json格式)不能使用new來建立例項?

時間 2021-06-23 15:40:49

1樓:dboy

你問了乙個為什麼吃飯的筷子不能用來修自行車這樣的問題。

語言是人設計的,人設計的時候決定:new只有跟函式才有意義(例項化),new 後面跟別的東西沒有意義。

2樓:路人乙

最最簡單的說法:因為function不是具體的值,而且乙個求值的過程。JSON為啥不能new,因為JSON已經有值了(被例項化),,如:

varfun

=function();

}console

.log

(new

fun());

//返回乙個方法(或者稱之為自定義建構函式)沒有具體值,所以可以繼續new

console

.log

(new

newfun

());

//返回空Object:{} (空的Object也算是一種值哦)雖然說法不是很準確。。。但就是這樣:

你出生時相當於this.身高 = new 身高('180CM');這時候你的身高已經成型了,如果不滿意你只能讓上帝強行修改this.身高=190CM,或者重新this.

身高 = new 身高('190CM'),而不能通過new 180CM('190CM')來改變身高,因為身高本身(180CM)是你已經例項化的,JOSN也一樣已經是擁有的值了,你要JSON去new誰呢?

3樓:

var s=new String();

var a=new Array();

這都是可以執行的,var 宣告的物件可以用new 來建立,使用new 建立的是物件例項

Object、Array、Date、RegExp、Math、Error。這些名稱實際上表示乙個型別,可以通過new操作符返回乙個物件

so 使用new返回的是物件例項,當你不使用new的時候返回的是物件的引用。

javascript中object keys方法使用的問題(實操和書上寫的不相符)?

混混蛋 Object.keys obj 返回obj的自身 不包含原型鏈上的 的所以可列舉屬性的名字陣列 for in迴圈則包含原型鏈.for name in obj Object.getOwnPropertyNames obj 返回obj自身 不含原型鏈上的 的所有屬性名陣列,包括不可列舉的 想要獲...

javascript中Element nodeValue和innerHTML有什麼區別

DOM中的節點是分好幾種型別,常見的有 1.文件節點 document,唯一 2.元素節點 那些個標籤div,p之類 3.屬性節點 class,src這種 4.文字節點 插入在p,div內的文字 其它。其中element.nodeValue,是節點的值,其中屬性節點和文字節點是有值的,而元素節點沒有...

JavaScript中for和filter哪個效能更好?

bilibilili 首先你要先去看看 filter 是怎麼實現的。另外 for 迴圈裡面兩個優化點。看你這個判斷條件這麼簡單,沒必要在迴圈裡重新申請乙個變數了,另外不需要 break,直接 return 出去就完事兒了。另外說效能的話,除非你的陣列很長,子元素很大,一般情況來說,你感受不到效能區別...