zoukankan      html  css  js  c++  java
  • JavaScript必知必会

    JavaScript对象的基本原理

    对象从何而来

    var shinyAndNew = new Object()

    对象的属性

    var ride = new Object()
    ride.make = 'Yamaha'
    ride.model = 'V-Star Silverado 1100'
    ride.year = 2005
    ride.purchased = new Date(2005, 3, 12)
    
    

    不需要在赋值前声明对象的属性,这些属性不过是通过赋值而产生的。

    Object的实例,简称对象,就是一属性集。每个属性由名称和值构成。属性的名称是字符串,属性值可以是任意的javaScript对象,如Number, String, Date, Array, Object, 也可以是函数。

    属性不局限于类似于String或Number的类型。一个对象属性可以是另一个Object实例,这个实例又包含其自己的属性集,而属性集中也可以包含拥有属性的对象,以此类推。只要对我们塑造的数据模型有意义,就可以嵌套至任何层次。

    var owner = new Object()
    owner.name = 'Spike Spiegel'
    owner.occupation = 'bounty hunter'
    ride.owner = owner
    
    

    点操作符是属性的简写形式,属性名可以是任何字符串。以下是等价的3个引用:

    ride.make
    ride['make']
    ride['mak' + 'e']
    
    

    当名称并非有效标识符的时候只能使用通用的引用操作符。

    对象字面值

    以上代码冗长易错,幸运的是,我们有紧凑的表示法:

    var ride = {
        make: 'Yamaha',
        model: 'V-Star Silverado 1100',
        year: 2005,
        purchased: new Date(2005, 3, 12),
        owner: {
            name: 'Spike Spiegel',
            occupation: 'bounty hunter'
        }
    }

    这种表示法被称为JSON。

    作为窗体属性的对象

    顶层变量是window对象的属性。如果变量在所有函数作用域外声明,下面语句是等价的:

    var foo = bar
    window.foo = bar 
    foo = bar 
    

    作为一等公民的函数

    名称中包含了什么

    下面的代码是等价的:

    function dosomething() { } 
    dosomething = function () { } 
    

    第二行等号右边的部分被称为函数字面值。

    作为回调的函数

    this到底是什么

    this称为函数上下文,其所代表的对象是由调用函数的方式决定的。这意味着,同样的函数可以有不同的上下文,取决于调用函数的方式。

    var ride = {
        make: 'Yamaha',
        model: 'V-Star Silverado 1100',
        year: 2005,
        purchased: new Date(2005, 3, 12),
        owner: {
            name: 'Spike Spiegel',
            occupation: 'bounty hunter'
        },
        //演示this
        whatAmI: function () {
            return this.year + ' ' + this.make + ' ' + this.model
        }
    }
    
    • 顶层函数是window的属性,因此当将其作为顶层函数来调用时,其函数上下文就是window对象。
    • 当把函数作为对象的属性来调用时,该对象就成为函数调用的函数上下文。
    • 函数对象的call()属性的第一个参数是函数上下文。
    • 函数对象的apply()属性的第一个参数是函数上下文。

    当对象o充当了函数f的调用函数上下文时,函数f就充当了对象o的方法。

    闭包

    闭包就是function实例,它结合了来自环境的(函数执行所需的)局部变量。

  • 相关阅读:
    函数式对象
    PageRank网页排名算法
    文档倒排序索引
    单词共现算法
    MapReduce关系代数运算
    矩阵乘法的MapReduce实现
    对象序列化(二)
    信息流产品和内容推荐算法
    从企业实操的角度谈深度学习(图像方向)的底层逻辑之概念普及
    Python深度学习企业实战之TensorFlow的底层原理及安装
  • 原文地址:https://www.cnblogs.com/cuishengli/p/2546158.html
Copyright © 2011-2022 走看看