基本构造器 - 入门级 Javascript

Basic Constructors - Entry Level Javascript

我无法阻止 运行 遇到此代码的问题。我认为我正在做一些非常错误的事情,而且我认为询问知道自己在做什么的人是最好的做法。

实际 "problem" 或任务是创建一个简单的电视 object。它具有三个特点。做一个。叫它。显示所有特征。那就大功告成了。

我声明变量并创建构造函数。根据作业规则,这两个东西都必须保留在文档的 header 中。

接下来是body。我想用这些参数创建一个名为 myTV 的新电视 object。我创建了一个函数来召回数据。然后我主动把数据回调回来

在某处,我遇到了逻辑问题、可能的语法问题,谁知道还有什么问题。盯着同一个代码看了这么久,我的心都快晕了,所以我要喝点东西,然后在 15 点回来查看。呃。

<html>
<head>
<script type="text/javascript">

    var manuTV;
    var sizeTV;
    var priceTV;

    function Television(manu, size, price){
        this.manuTV = manu;
        this.sizeTV = size;
        this.priceTV = price;
    }

</script>
</head>
<body>
<script type="text/javascript">

    var myTV = new Television("Sony", 52, 999);

    function DisplayInfo(){
        document.write("Television Manufacturer: " + this.manuTV + "<br />");
        document.write("Size(in inches)" + this.sizeTV + "<br />");
        document.write("Price:" + this.priceTV + "<br />");
    }

    myTV.displayInfo();

</script>
</body>
</html>

您的 DisplayInfo 方法与您的 Television 没有任何关系。您可以做两件简单的事情来让它发挥作用。您可以将 DisplayInfo 添加到 Television 的原型中。

Television.prototype.displayInfo = function(){
    document.write("Television Manufacturer: " + this.manuTV + "<br />");
    document.write("Size(in inches)" + this.sizeTV + "<br />");
    document.write("Price:" + this.priceTV + "<br />");
}

这会将方法添加到 Television 的原型中,因此任何 Television 都可以使用它 (tv.displayInfo())。你也可以这样做:

function displayInfo(tv){
    document.write("Television Manufacturer: " + tv.manuTV + "<br />");
    document.write("Size(in inches)" + tv.sizeTV + "<br />");
    document.write("Price:" + tv.priceTV + "<br />");
}

Television 对象传递给 DisplayInfo,(请参阅添加到方法签名的参数),然后使用 tv 而不是 this。然后像这样调用函数:

displayInfo(myTv);