对象

狭义对象

在JavaScript中,对象可以通过点语法动态添加属性和方法。狭义对象用{ }表示,可以拥有许多属性和方法。右侧的属性值为function,则为方法,否则称之为属性。

                var obj = {                    name: "小明",                    age: 18,                    sex: "男",                    eat: function() {                        console.log("我可以吃八斤米饭");                    }                };                console.log(typeof obj);                console.log(obj.name);                console.log(obj.age);                console.log(obj.sex);                console.log(obj.eat);                obj.name = "二哈";                obj.age = 2;                obj.sex = "公";                obj.color = "白加黑";                obj.yaoren = function() {                    console.log("我可以咬人");                };                obj.eat();                obj.yaoren();            

广义对象

函数

函数是广义对象,具有内置属性和方法。函数可以通过点语法动态添加属性和方法。

                var obj = {                    name: 'zdc',                    age: 18,                    sex: '男',                    eat: function() {                        console.log("我很能吃");                    }                };                console.log(typeof obj);                function multi(a, b) {                    return a * b;                }                console.log(multi.name);                console.log(multi.length);                multi.age = 19;                multi.sex = 'male';                console.log(multi.sex);            

数组

数组也是广义对象,具有内置方法和属性。数组可以通过点语法动态添加属性和方法。

                var arr = ["吃饭", '睡觉', '打豆豆'];                console.log(arr.length);                console.log(arr.reverse());                console.log(arr.join());                arr.xingming = "小红";                arr.age = 18;                arr.sex = "女";                console.log(arr.xingming);            

什么不是对象

基本数据类型

在JavaScript中,基本数据类型不是对象:数字、字符串、布尔值、未定义、空对象。NaN是数字类型中的特殊值,不是数据类型。

函数上下文

函数上下文

函数上下文即为this,只能在函数体中使用,取决于函数如何调用。函数执行有五种方式:

  • 函数名+小括号执行,上下文为window(BOM对象)
  • 函数作为事件处理函数执行,上下文为当前触发事件的标签
  • 定时器回调函数,上下文为window
  • 函数作为数组元素枚举出来执行,上下文为当前数组
  • 函数作为狭义对象方法执行,上下文为最后打点对象

new关键字

new关键字

new关键字是调用函数的另一种方式,被new调用的函数称为构造函数。构造函数的特征是:用new调用,并且函数首字母通常大写。

                function Fun() {                    console.log("兄弟你执行呀");                }                new Fun;                new Fun;            

构造函数

构造函数特征

  • 构造函数的首个英文字母通常大写(非必要)
  • 如果函数是用new调用的,则称为构造函数
                function People() {                    this.xingming = "小明";                    this.age = 18;                    this.sex = "男";                    this.hobby = ['吃饭', '睡觉', '打豆豆'];                }                var obj = new People;            

原型链 prototype

原型链

任意构造函数天生都有一个 prototype 属性,指向一个空的狭义对象。实例通过__proto__属性向上面的狭义对象借用方法使用。

                function Dog(name, age, sex) {                    this.name = name;                    this.age = age;                    this.sex = sex;                }                var erha = new Dog("二哈", 18, "公");                var taidi = new Dog("太低", 6, "母");                erha.yaoren();                taidi.yaoren();