首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >js创建先进原型

js创建先进原型
EN

Stack Overflow用户
提问于 2012-11-22 13:58:09
回答 2查看 98关注 0票数 1

我在一个项目中工作,大部分时间我必须导入computed style of html divs.因此,我尝试在Object下创建一个自定义的Object,使我的代码变得更好、更简单和更短……这是对我有用的密码..。

代码语言:javascript
复制
Object.prototype.css=function(){
    return window.getComputedStyle(this);
}

var anode of a html div而我需要height of height div时,我必须像下面这样使用prototype .

代码语言:javascript
复制
a.css().height;

问题是..。我如何修改我的function来使用prototype,就像.

代码语言:javascript
复制
a.css.height; // css insead of css()

不jQuery请.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-22 14:20:41

如果您需要它作为一个属性,您必须放弃一些兼容性。只有现代浏览器才支持Object.defineProperty()

下面是一个示例:

代码语言:javascript
复制
function SomeType() {}
Object.defineProperty(SomeType.prototype, 'att', {
  get: function() {
    return this.att_;
  },
  set: function(value) {
    this.att_ = value;
  }
});

在您的例子中,您可以扩展HTMLElementHTMLDivElement的原型。HTMLDivElement的原型是从HTMLElement那里继承的。所以您可以这样做:

代码语言:javascript
复制
Object.defineProperty(HTMLElement.prototype, 'css', {
  get: function(){
    return window.getComputedStyle(this);
  }
});
票数 7
EN

Stack Overflow用户

发布于 2012-11-22 14:09:54

在Javascript中,函数是一流的对象。基本上,函数定义就像任何其他变量一样。可以将下列所有内容分配给属性:

代码语言:javascript
复制
a.css = "some value";
a.css = 22;
a.css = function() { return 1; };

现在,如果你试图打印它们:

代码语言:javascript
复制
a.css //"some value"
a.css //22
a.css //function (){return 1;}

为了调用函数,需要调用a.css()。获得所需行为的一种方法是执行函数并将输出绑定到另一个属性。

代码语言:javascript
复制
Object.prototype.makeCSSProperty=function(){
    this.css = window.getComputedStyle(this);
}

a.makeCSSProperty();
a.css.height;

但是,此属性将是静态的,仅反映运行makeCSSProperty()方法时存在的样式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13514277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档