相关疑难解决方法(0)

如何设置已经实例化的JavaScript对象的原型?

假设我的fooJavaScript代码中有一个对象. foo是一个复杂的对象,它是在其他地方生成的.如何更改foo对象的原型?

我的动机是将适当的原型设置为从.NET到JavaScript文字序列化的对象.

假设我在ASP.NET页面中编写了以下JavaScript代码.

var foo = <%=MyData %>;
Run Code Online (Sandbox Code Playgroud)

假设这MyData是在对象JavaScriptSerializer上调用.NET的结果Dictionary<string,string>.

在运行时,这将变为以下内容:

var foo = [{"A":"1","B":"2"},{"X":"7","Y":"8"}];
Run Code Online (Sandbox Code Playgroud)

如您所见,foo成为一个对象数组.我希望能够foo使用适当的原型进行初始化.我不是要修改Object.prototype,也没有Array.prototype.我怎样才能做到这一点?

javascript function-prototypes

101
推荐指数
4
解决办法
7万
查看次数

javascript中的对象和函数

可能重复:
Javascript:我是否需要为对象中的每个变量放置this.var?

我正在努力理解javascript中的函数和对象.据说,函数也是对象,对象是一种"关联数组",即键值对的集合.我明白,如果我写

function myFunction() {
    var value = 0;
}
alert(myFunction.value); //then this gives me "undefined"
Run Code Online (Sandbox Code Playgroud)

因为变量有功能范围.但如果我写

function myFunction() {
    this.value = 0;
}
alert(myFunction.value); //then this gives me "undefined" too.
Run Code Online (Sandbox Code Playgroud)

但最后,如果我写

function myFunction() {
    this.value = 0;
}
myFunction.value = 0;
alert(myFunction.value); //then this gives me 0
Run Code Online (Sandbox Code Playgroud)

所以我可以给myFunction属性"value"但是来自"outside".有人可以解释发生了什么以及为什么this.value = 0; 不会创造属性"价值".

javascript scope

16
推荐指数
2
解决办法
982
查看次数

JavaScript中这三种"类"定义模式之间有什么区别?

当选择使用这四种模式中的一种而不是其他模式时,是否存在任何重要/细微/显着的差异?并且,当通过Object.create()vs new运算符"实例化"时,它们之间是否存在差异?

1)CoffeeScript翻译"类"定义时使用的模式:

Animal = (function() {

  function Animal(name) {
    this.name = name;
  }

  Animal.prototype.move = function(meters) {
    return alert(this.name + (" moved " + meters + "m."));
  };

  return Animal;

})();
Run Code Online (Sandbox Code Playgroud)

2)Knockout似乎促进的模式:

var DifferentAnimal = function(name){

    var self = this;

    self.name = name;

    self.move = function(meters){
        return alert(this.name + (" moved " + meters + "m."));
    };

}
Run Code Online (Sandbox Code Playgroud)

3)我经常看到的类似的简单模式:

var DifferentAnimalWithClosure = function(name){

    var name = name;

    var move = …
Run Code Online (Sandbox Code Playgroud)

javascript coffeescript backbone.js knockout.js

15
推荐指数
1
解决办法
643
查看次数

是什么让my.class.js如此之快?

我一直在查看my.class.js的源代码,以了解是什么让它在Firefox上如此之.这是用于创建类的代码片段:

my.Class = function () {
    var len = arguments.length;
    var body = arguments[len - 1];
    var SuperClass = len > 1 ? arguments[0] : null;
    var hasImplementClasses = len > 2;
    var Class, SuperClassEmpty;

    if (body.constructor === Object) {
        Class = function () {};
    } else {
        Class = body.constructor;
        delete body.constructor;
    }

    if (SuperClass) {
        SuperClassEmpty = function() {};
        SuperClassEmpty.prototype = SuperClass.prototype;
        Class.prototype = new SuperClassEmpty();
        Class.prototype.constructor = Class;
        Class.Super = SuperClass;
        extend(Class, SuperClass, …
Run Code Online (Sandbox Code Playgroud)

javascript oop instantiation jsperf

-3
推荐指数
1
解决办法
1382
查看次数