• 属性访问器


    转载地址:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Property_Accessors

    属性访问器提供了两种方式用于访问一个对象的属性,它们分别是点号和方括号。

    语法

    object.property
    object["property"]

    描述

    我们可以将对象看做是一个关联数组,或映射,字典,哈希表,查找表。这个数组中的键就是这个对象中属性的名称。通常,当我们提及一个对象的属性时,会对属性与方法之间做个对比。然而,属性与方法之间的区别并不大。一个方法就是一个可以被调用的属性而已,例如一个指向Function实例的引用可以作为对象属性的值。

    访问对象属性有两种方式:点号表示法和方括号表示法。

    点号表示法

    get = object.property;
    object.property = set;

    以上代码中,property必须是一个有效的 JavaScript 标识符,例如,一串字母数字字符,也包括下划线及美元符号,但不能以数字作为开头。比如,object.$1是合法的,而 object.1是无效不合法的。

    document.createElement('pre');

    在上述代码块中,document中存在一个名为"createElement"的方法并且被调用了。

    如果对数字字面量使用方法,并且数字文字没有指数且没有小数点,请在方法调用之前的点之前留出空格,以防止点被解释为小数点。

    77 .toExponential();
    // or
    77
    .toExponential();
    // or
    (77).toExponential();
    // or
    77..toExponential();
    // or
    77.0.toExponential();
    // because 77. === 77.0, no ambiguity

    方括号表示法

    get = object[property_name];
    object[property_name] = set;

    property_name 是一个字符串。该字符串不一定是一个合法的标识符;它可以是任意值,例如,"1foo","!bar!", 甚至是一个空格。

    document['createElement']('pre');

    这里的代码的功能跟上一个列子的作用是相同的。

    括号之前允许有空格。

    document ['createElement']('pre');

    属性名

    属性名必须是字符串。这意味着非字符串对象不能用来作为一个对象属性的键。任何非字符串对象,包括number,可通过toString方法,类型转换成一个字符串。

    var object = {};
    object['1'] = 'value';
    console.log(object[1]);

    上述代码的输出为"value",因为1被类型转换为'1'。

    var foo = {unique_prop: 1}, bar = {unique_prop: 2}, object = {};
    object[foo] = 'value';
    console.log(object[bar]);

    []操作符都会默认调用toString方法

    [foo]被转化为[Object object]字符串

    上述的代码的输出也是"value",由于对象foo和bar 都会被转成相同的字符串。在SpiderMonkey JavaScript 引擎中,这个字符串将会是"['object Object']"。

    方法绑定

    一个方法没有绑定到对象上,那就意味着这个方法是不起作用的。特别要注意的是,在一个方法中this对象并不是固定的,例如,this不需要指向包含当前方法的对象。this可通过函数调用被传递过去的值所替换。详见方法绑定

    注意eval

    JavaScript新手在使用eval时会犯错,在那些可通过括号表示法替换的场景下。例如,下面的语法经常在很多代码中找到。

    x = eval('document.forms.form_name.elements.' + strFormControl + '.value');

    eval的性能较差,在任何时候都应该避免使用。而且,此时strFormControl必须是一个合法的标识符, 这在一些names、IDs表单控件中并不是必要的。所以,最好是使用括号来代替:

    x = document.forms["form_name"].elements[strFormControl].value;
  • 相关阅读:
    常见ETL工具一览
    php语言查询Mysql数据库内容
    修改博客园模板样式
    《将博客搬至CSDN》
    使用 Git 和 GitHub 托管项目源码
    Delphi webbrowser 的一些方法
    Delphi 实现 图灵机器人API(IDHTTP POST )
    Delphi 中调用JS文件中的方法
    HTTP 常见异常状态及Delphi IDHTTP 控件处理方式
    Delphi Cookie获取及使用
  • 原文地址:https://www.cnblogs.com/jokes/p/9248086.html
Copyright © 2020-2023  润新知