对象
狭义对象
在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();