我想添加功能(新方法)到內置對象(在我的情況下,類型CanvasRenderingContext2D)。Object.create和內置對象
第一種方法是將方法添加到原型,它的工作原理,但我不想修改內置對象。
我想使用的Object.create(從ES5)來擴展對象,像Object.create(context, <my_method_descriptors>)
,但它acessing屬性時/調用擴展對象的方法無法在某些瀏覽器。例如,這個片段
var canvas = document.getElementById("mainCanvas");
var context = canvas.getContext('2d');
var exContext = Object.create(context);
try {
exContext.fillStyle = 'red';
exContext.fillRect(0, 0, 120, 120);
} catch (e) {
alert(e);
}
將無法在IE9測試版和Safari 5,但成功的火狐4測試版和Chrome 7
又如:Object.create(new Date()).getDate()
無法在所有瀏覽器。
有什麼想法?
不錯的答案,我沒有意識到本地對象的限制。我將創建一個包裝。 – 2010-11-11 14:16:44