1)html元素有原型还是只是javascript对象?换句话说,这样的事情会以任何形式出现吗?
<div class="wrapper>
<img src=""mypicture.png />
<p>Click here</p>
</div>
.wrapper
{width:200px; height:50px;}
img
{width:100%;height:100%;}
p
{display:inline-block;height:100%;width:100%;}
然后在JS / jQuery中这样:
p.prototype = img;
$.on("click", "p", function(){
$(this).prototype.trigger("click");
});
2)说我正在使用原型来创建我正在编写的特定插件。我现在不是为了提供信息而已。比方说,在这个插件中,我正在使用JS积分Image()对象,我决定,无论出于何种原因,为它分配一个不同的原型或添加一些原型。我是否必须“撤消”插件退出时所做的所有原型工作,以免干扰网站上可能正在使用Image()对象的任何其他内容。像其他OOP语言中的垃圾收集之类的东西。例如:
---插件开始
Image.prototype = foobar;
var image = new Image();
///
do code here
///
on("plugin close ", function (){
Image.prototype.release;
OR
Image.prototype = assign back to whatever it was originaly?
});
---插件结束
以下是我认为答案可能是: 1)不!但希望是的...... 2)没有原型重置不是必要的,因为如果一个jQuery插件被包装在一个匿名函数中,那个代码实例只存在于那个实例而且它不会影响全局的Image()对象,只是本地实例Image()对象。
我现在正试图进入原型。我已经完成了大量的研究,并且我看到了使用它们的好处,但在我像傻瓜一样跳进它们之前,我想知道如何正确使用它以及我能做什么和不能做什么。
再次大家好!
答案 0 :(得分:0)
关于自定义HTML元素行为,这不会像您在代码中显示的那样工作,但是现在可以部分使用传入标准来执行此操作。 Check this article to learn more about custom elements.
另一方面,关于你的Image
样本并在其原型中添加成员,我真的相信你需要了解范围。如果您更改了全局对象原型,那么如果您在全局或某些本地范围内执行此操作,则需要修改其原型。
因此,您需要继承 Image
并在新对象中添加行为:
var CustomImage = function() {};
CustomImage.prototype = new Image();
CustomImage.doSomething = function() {
};
或者...
var customImageObject = Object.create(Image.prototype, {
doSomething: {
value: function() { }
}
});
无论如何,关于“重置原型”的想法是一个非常非常糟糕的想法!。 Play with prototype chain!