gpt4 book ai didi

Javascript:复制变量和原型(prototype)

转载 作者:行者123 更新时间:2023-11-28 20:13:59 25 4
gpt4 key购买 nike

好吧,Javascript 是一种“原型(prototype)”语言,据我了解,这意味着它具有如下内容:

var c = document.getElementById('myCanvas');
c.ctx = c.getContext('2d');

现在,如果我这样做:

var c = document.getElementById('myCanvas');
c.ctx = c.getContext('2d');
c = document.getElementById('newCanvas');

c.ctx 会在影响全新 Canvas 的同时保留并发挥作用吗?谢谢!

我的实验结果是否定的,但我问是因为也许我遗漏了一些东西。如果理论上这不起作用,您有什么好的方法可以相对轻松地解决它吗? (或者不那么容易,但当然更喜欢容易!)

最佳答案

Will c.ctx remain and be functional while affecting a totally new canvas?

不,您正在为 c 创建一个全新的引用.

so Javascript is a 'prototype' language

为什么不在原型(prototype)中定义你想要的内容呢?

Object.defineProperty(
HTMLCanvasElement.prototype,
'ctx',
{
'get': function () { return this.getContext('2d'); },
'configurable': true
}
);

现在全部<canvas>通过 DOM 接口(interface)访问元素时,元素将具有属性 ctx,该属性获取其上下文。

如果您对缓存的上下文感到满意,则可以使用它

function () { return this.ctx = this.getContext('2d'); }

它在实例上设置一个新属性,该属性遮蔽了原型(prototype)的 getter。

关于Javascript:复制变量和原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19473274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com