相关疑难解决方法(0)

John Resig的Javascript继承代码段是否已被弃用?

我正在寻找一种简单的方法来创建两个类,一个继承自另一个类,子类重新定义父方法之一,并在新方法内调用父类.

例如,有一个类,Animal并且Dog,Animal类定义了一个makeSound()确定如何输出声音的方法,然后Dog在其自己的makeSound()方法中覆盖以产生"低音"声音,但同时也调用Animal makeSound()来输出那个低音.

我在这里查看了John Resig的模型,但它使用了arguments.calleeECMA脚本中明显折旧的本机属性.这是否意味着我不应该使用John Resig的代码?

使用Javascript的原型继承模型编写动物/狗代码的简洁方法是什么?

javascript oop inheritance prototypal-inheritance

24
推荐指数
2
解决办法
6446
查看次数

正确的javascript继承

我一直在阅读很多关于javascript中"继承"的文章.其中一些使用,new而其他人推荐Object.Create.我读的越多,我就越困惑,因为它似乎存在无穷无尽的变体来解决继承问题.

有人可以向我展示最受欢迎的方式(如果有的话,还是事实上的标准)?

(我想有一个基础物体Model,我可以延伸RestModelLocalStorageModel).

javascript

13
推荐指数
2
解决办法
2841
查看次数

函数的Javascript类继承

我已经设置了一个基类作为标准:

MyBase = function() {
    this.m_Stuff = 0; // etc
};
MyBase.prototype.MySuperFunction = function (arg1) {
    alert("Hello" + arg1);
};
Run Code Online (Sandbox Code Playgroud)

接下来,我设置了另一个继承MyBase的类

MyChild = function () {
    MyBase.call(this);
    this.m_OtherStuff = 1; // etc
};
MyChild.prototype = new MyBase(); // innherit
Run Code Online (Sandbox Code Playgroud)

但那时(这是我不知道该怎么做)我想用更好的一个覆盖MyBase的MySuperFunction,但是在这个过程中调用基类函数:

MyChild.prototype.MySuperFunction = function (arg1, arg2) {
    MyBase.MySuperFunction(arg1); // THIS LINE IS THE LINE I DONT KNOW HOW TO DO
    alert("You is a " + arg2 + "'th level idiot");
};
Run Code Online (Sandbox Code Playgroud)

它想要覆盖的子类是基类函数,但是想要在新的改进定义中调用基类函数.

这是可能的,如果是的话,怎么办呢?

javascript inheritance class

5
推荐指数
2
解决办法
566
查看次数

在构造函数内部分配原型方法* - 为什么不呢?

在风格上,我更喜欢这种结构:

var Filter = function( category, value ){
  this.category = category;
  this.value = value;

  // product is a JSON object
  Filter.prototype.checkProduct = function( product ){
    // run some checks
    return is_match;
  }

};
Run Code Online (Sandbox Code Playgroud)

对于这种结构:

var Filter = function( category, value ){
  this.category = category;
  this.value = value;
};// var Filter = function(){...}

Filter.prototype.checkProduct = function( product ){
  // run some checks
  return is_match;
}
Run Code Online (Sandbox Code Playgroud)

从功能上讲,以这种方式构造我的代码有什么缺点吗?将原型方法添加到构造函数体内的原型对象(即在构造函数的表达式语句关闭之前)会导致意外的范围问题吗?

我之前已经成功使用了第一个结构,但是我想确保自己没有为调试带来麻烦,或者由于编码错误导致开发人员悲痛和恶化.

javascript methods scope prototype

5
推荐指数
1
解决办法
1241
查看次数