2015-06-08 20 views
2

我想設置一個對象的原型。Node.js - Object.getPrototypeOf

但是,有時我想設置/獲取字符串的原型。然而令人驚訝的,我得到一個錯誤,當我打電話:

var foo = 'baz'; 
Object.getPrototypeOf(foo); 

它拋出:

TypeError: Object.getPrototypeOf called on non-object 
    at Function.getPrototypeOf (native) 

這是爲什麼,我怎麼能圍繞它得到什麼?

我想成爲能夠設置和獲取字符串的原型。奇怪的是我可以做到這一點沒有錯誤:

var myProto = {}; 

var foo = 'baz'; 
Object.setPrototypeOf(foo,myProto); 

回答

3

找到在JavaScript中有7種數據類型:6種原始類型和對象。原始類型是布爾型,空值,未定義,數字,字符串和符號。

var foo = 'baz'; 

創建一個基本類型字符串'baz'

var foo = new String('baz'); 
Object.getPrototypeOf(foo); // String 

創建String類型的對象。

1

var foo是一種原始的對象,所以您將無法訪問它的原型,如果您查看以下鏈接:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf

你得到的,你在做什麼的例子,並說它會拋出一個TypeError就像你

按的文檔,你可以做如下:

var proto = {}; 
var obj = Object.create(proto); 
Object.getPrototypeOf(obj) === proto; // true 

但我沒有看到任何參考,你可以從字符串中調用Object.getPrototypeOf

所以,你應該創建一個新的String對象:

var foo = new String('baz');