相关疑难解决方法(0)

这些Javascript函数声明的差异

今天我看到了两种不同类型的Javascript函数声明,我想对这两种声明有更深入的了解:

function Car( model, year, miles ){
   this.model = model;
   this.year    = year;
   this.miles  = miles;
}

/*
 Note here that we are using Object.prototype.newMethod rather than 
 Object.prototype so as to avoid redefining the prototype object
*/
Car.prototype.toString = function(){
    return this.model + " has done " + this.miles + " miles";
};

var civic = new Car( "Honda Civic", 2009, 20000);
var mondeo = new Car( "Ford Mondeo", 2010, 5000);

console.log(civic.toString());
Run Code Online (Sandbox Code Playgroud)

和类型2:

function Car( model, year, miles ){
   this.model …
Run Code Online (Sandbox Code Playgroud)

javascript

0
推荐指数
1
解决办法
66
查看次数

从javascript函数获取类方法

假设我有一个函数,我需要检查它是否具有某个名称的类方法.例如:

function Foo() {
    this.bar = function() {
        console.log("I am bar!");
    }
}
Run Code Online (Sandbox Code Playgroud)

我想检查Foo类是否实际上有bar方法.我可以创建一个新的Foo实例,然后检查它,我只是想知道是否有更好的方法来做到这一点.

javascript class

0
推荐指数
1
解决办法
609
查看次数

淘汰原型问题

我想了解为什么当属性是原型时,knockout的行为会有所不同,尤其重要的是,如何避免它,同时仍然使用原型.
我想要覆盖一些方法,因为我有一个我们要继承的基本视图模型

以下是我的意思

JSFIDDLE WITH PROTOTYPE [尝试输入第一个输入框,它将出现在另一个输入框中]

var viewModel = function(params) {
        this.params =  params;
    };
    viewModel.prototype.text = ko.observable(this.params  && this.params.initialText || '');


ko.components.register('message-editor', {
    viewModel: viewModel,
    template: 'Message: <input data-bind="value: text" /> '
            + '(length: <span data-bind="text: text().length"></span>)'
});
 
ko.applyBindings();
Run Code Online (Sandbox Code Playgroud)
<!-- ko component: "message-editor" -->
<!-- /ko -->
<br />
<!-- ko component: "message-editor" -->
<!-- /ko -->


<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
Run Code Online (Sandbox Code Playgroud)

没有PROTOTYPE的JSFIDDLE [尝试输入第一个输入框,它不会出现在另一个输入框中]

var viewModel = function(params) {
        this.params =  params;
        this.text = ko.observable(this.params  && this.params.initialText || '');
    };


ko.components.register('message-editor', …
Run Code Online (Sandbox Code Playgroud)

javascript prototype knockout.js knockout-components

0
推荐指数
1
解决办法
114
查看次数

与普通的OO语言相比,Javascript中的"OO"是否有效?

JavaScript不是面向类的编程语言.但是,有一些方法可以在JavaScript中创建对象实例.我已经读过一个这样的方法是一个函数构造函数方法来创建"实例",一种方法是这样的:

function Circle(radius) {
    this.radius = radius;
    Circle.prototype.area = function () {
        return this.radius * this.radius * 3.14
    }
}
smallWheel = new Circle(2); bigWheel = new Circle(5);
smallWheel.area == bigWheel.area => True;
Run Code Online (Sandbox Code Playgroud)

是不是有在一个低效率Circle.prototype.area再次复位到相同的功能"串" function () { return this.radius * this.radius * 3.14 当你调用Circle(2)Circle(5)

虽然它设置了相同的值,但效率不高吗?想象一下,有数百个实例......这可能效率低下?

根据我的理解,正常的OO语言不需要为一个实例反复编译函数,因为它是共享的.任何人都可以澄清吗?

编辑:这是我的疏忽,我错过了函数体后面的下一行'}'.然而,下面的答案特别有用,特别是它应该在外面定义的部分,这个区域是低效的.

javascript oop function

-4
推荐指数
1
解决办法
78
查看次数