javascript - 为什么 var a 未定义? JavaScript面向对象编程

标签 javascript oop prototype

我有这个代码。它创建一个具有 x 和 y 字段的对象。我想添加一个方法,它创建具有附加宽度和高度字段的新对象。但尽管我尝试了,它仍然返回未定义。怎么了?

JSFiddle

function $ (x, y) {
    this.x = x;
    this.y = y;

    return this;
}

$.prototype.$ = function (x, y) {
    this.width = x - this.x;
    this.height = y - this.y;

    return this;
}

var a = $(10,10).$(30,30);
alert(a.width);

最佳答案

var a = (new $(10,10)).$(30,30); //You need new
alert(a.width);

此外,让类的实例函数与类同名可能不是一个好主意——这有点令人困惑。

<小时/>

以下是如何使用 2 个“Point”对象执行您想要执行的操作(如评论中所要求的):

var Point = (function(){
    var Point = function(x, y) {
        this.width = x;
        this.height = y;
    }
    Point.prototype.removePoint = function(point) {
        return new Point(point.width - this.width, point.height - this.height);
    }

    return Point;
})()

var a = new Point(10,10);
var b = new Point(30,30);

var c = a.removePoint(b);
alert(c.width);

fiddle :http://jsfiddle.net/maniator/d3fx7/

关于javascript - 为什么 var a 未定义? JavaScript面向对象编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16242179/

相关文章:

java - Java 的双向可扩展层次结构

c++ - 为什么 C++ new 不返回指向它创建的对象的指针?

用多态替换 Python 条件

javascript - JavaScript 函数的原型(prototype)属性的初始值是多少?

javascript - 获取临时 AWS 凭证的推荐方法? AWS.config 还是 STS?

javascript - 如何将值从 php 传递到 jquery 函数我的代码如下

ios - 使用超过 1 个 Prototype Cell 时 UITableView 的奇怪行为

javascript - 如何覆盖原型(prototype)中的事件监听器?

javascript - 访问其中包含 "-"的 JavaScript 对象属性名称

javascript - 理解 Javascript 奇怪的非运算符和空数组表达式