我想添加功能(新方法)到内置对象(在我的情况下,类型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