javascript - 如何在 JavaScript 的构造函数中定义对象的原型(prototype)?

标签 javascript

我要创建一个对象构造函数,并将一个对象作为其属性之一,并希望向该对象的原型(prototype)添加方法。

像这样定义它是行不通的,因为该对象是从对象文字而不是构造函数实例化的:

 function Resource (options) {
    this.self = this;
    this.options = options || {};

    .. other options. ...
    
    // service object that I want to add functions to its prototype
    this.service = {
        request: new XMLHttpRequest(),
        requestMethod: options.requestMethod ||'GET',
    },
    // using prototype actually creates an object called prototype 
    // as a property of the service object.
    this.service.prototype = {
        dataToNode: function(element, parent, data){
            var toAppend = document.createElement(element);
            toAppend.innerHTML = data;
            return parent.appendChild(toAppend);
        },
} 

切入主题并像这样使用 __proto__ 是可行的,但 __proto__ 已被贬值。

如何在不使用 __proto__ 的情况下添加到对象原型(prototype)?

function Resource (options) {
    this.self = this;
    this.options = options || {};

    .. other options. ...
    
    // service object that I want to add functions to its prototype
    this.service = {
        request: new XMLHttpRequest(),
        requestMethod: options.requestMethod ||'GET',
    },
    // using __proto__ works but its deprciated
    this.service.__proto__ = {
        dataToNode: function(element, parent, data){
            var toAppend = document.createElement(element);
            toAppend.innerHTML = data;
            return parent.appendChild(toAppend);
        },
}

最佳答案

function Service(options) {
    this.request = new XMLHttpRequest();
    this.requestMethod = options.requestMethod || 'GET';
}

Service.prototype.dataToNode = function(element, parent, data){
    var toAppend = document.createElement(element);
    toAppend.innerHTML = data;
    return parent.appendChild(toAppend);
};

function Resource (options) {
    this.options = options || {};
    this.service = new Service(this.options);
} 

关于javascript - 如何在 JavaScript 的构造函数中定义对象的原型(prototype)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23205580/

相关文章:

javascript - 在 asp 中将变量传递给 javascript 函数失败 :dropdownlist

c# - 是否可以在 asp.net 页面中设置 localStorage 或 Session 变量并在另一页的 javascript 中读取它?

javascript - 无法打印 javascript 数组值

javascript - 多事件 $(function) 与单事件多 $(function) 之间的区别

JavaScript getElementsByTagName 显示 [object HTMLParagraphElement] 而不是该元素的内容?

javascript - 如何使变量在同一重复函数中交替值?

javascript - Highcharts - 同步图表中工具提示格式的问题

Javascript 某些方法嵌套在 For 中

javascript - 如何使用具有浏览器兼容性的jquery获取文件上传的base_64字符串?

javascript - javascript中实例的__proto__与其构造函数的原型(prototype)之间的关系