【问题标题】:Javascript function literals?Javascript函数文字?
【发布时间】:2012-08-08 06:57:43
【问题描述】:

我偶然发现了这段代码

var Actors = {

    init: function(config){
        this.config = config;
        this.bindEvents();
    },

    bindEvents: function(){
        this.config.letterSelection.on('change',this.fetchActors );
    },

    fetchActors: function(){
        console.log('fetching');
    }
};

起初我在想这是什么类型的 Javascript。我不知道要搜索什么。所以我想在这里问是合适的

我的理解是 var Actors 是一个对象。 但是这些呢?

 init: function(config){
        this.config = config;
        this.bindEvents();
    },

您具体将文字“init”称为什么?它被称为对象文字吗?在初始化之后,它附加了一个函数,你怎么称呼它?

我了解代码在做什么。但我不知道用技术术语如何称呼它们。 那么这是什么类型的javascript?为什么“init”这个词有它的功能

【问题讨论】:

标签: javascript json object literals


【解决方案1】:

您具体将文字“init”称为什么?它被称为对象文字吗?

一个属性。对象字面量是{}

在初始化之后,它附加了一个函数,你怎么称呼它?

一种方法。

为什么“init”这个词有它的功能

因为通过将它们分配给对象属性来组织一堆相关的“东西”很有用。

当函数可以使用this 对与其关联的对象进行操作时,情况就更是如此了。

【讨论】:

  • 所以init属性有一个附加的方法?
  • 不,它分配了一个函数,所以它变成了一个方法。
  • 所以init是一种方法?我说对了吗?这是否也与 JSON 有关?还是这是 JSON?
  • JSON 是 JavaScript 语言的一个特殊子集,基于对象文字语法。但是 JSON 语法不允许函数,所以这不是 JSON。
【解决方案2】:

JavaScript 是一种函数式语言,这意味着函数是其中的一等对象。所以如果你有一个变量,那么你可以给它分配一些字符串、一些数字、一些对象或一些函数,就像这样:

var a;
a = function() {};
a(); // Call this function

以同样的方式,您可以将函数分配给对象属性,如下所示:

var a = {};
a.myProp = function() {};
a.myProp(); // Call this function

但是当你像a.myProp()这样调用你的函数时,这个函数也会收到一个名为this的特殊参数,它指向a

因此,在您的情况下,Actors 被分配了对象文字,它有一个属性 init,它被分配了一个函数。你可以称它为method,但这是来自其他OO语言的概念。在这里,它只是一个分配了函数的属性。

【讨论】:

  • 不,Actors 是一个对象,而不是对象构造函数。在 JavaScript 中,函数是对象构造函数,例如: var a = function() { this.MyProp = 1; } a.prototype = { MyMethod: function () {}, MyMethod2: function() {}}; var b = new a();
  • 你应该阅读一些关于 JavaScript 对象模型的基本文档
  • 哦,是的,事情就是这样。我完全忘记了!不管怎么说,还是要谢谢你。在哪里可以看到 javaScript 对象模型的基本文档?
猜你喜欢
  • 1970-01-01
  • 2023-01-31
  • 2020-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-22
  • 1970-01-01
  • 2012-02-15
相关资源
最近更新 更多