//万物皆对象
var dog = {
//属性----特征
name: '旺财',
type: '中华田园犬',
age: '2',
//方法----行为
bark: function() {
console.log(this.name + '汪汪汪');
}, //这里要加上,
eat: function() {
console.log(this.name + '啃骨头');
}
}
// 访问对象
//第一种方法
console.log(dog.name);
dog.bark();
//第二种方法 中括号里面是字符串
console.log(dog['name']);
//函数和方法的区别
//函数独立存在 直接调用
//方法是对象的函数 函数的调用是dog.bark()
new关键字
构造函数 用于创建一类对象,首字母要大写 构造函数要和new一起使用才有意义
new在执行时会做的四件事:
new会在内存中创建一个空的对象
new会让this指向这个空对象
执行构造函数 目的:给这个新对象加属性和方法
new会返回这个新对象
this指向问题:
1、在函数中 -----返回的是window
2、在方法中 --------返回的是方法所属对象的属性
3、在构造函数中 ----------指向的是构造函数创建的对象
// 函数中
function fn() {
console.log(this); //window
}
fn();
//方法中
var o = {
name: 'lilei',
sex: 'nan',
sayhi: function() {
console.log(this.name); //lilei
}
}
o.sayhi();
//constructor 构造函数
function Fn() {
this.name = '韩梅梅';
this.age = 18;
console.log(this); //
}
var object = new Fn();
返回的是构造函数创建的对象:
对象和构造函数的区别:
对象里面的属性和方法采用的是键-值对的方式出现 name:'李雷' 构造函数里面是this.name='韩梅梅'
对象里面有方法(就是对象的函数),构造函数里面没有
对象是var o={} 构造函数是function Fn() {} 这里的Fn首字母要大写
对象里面是:
var o = {
name: 'lilei',
sex: 'nan',
sayhi: function() {
console.log(this.name); //lilei
}
}
o.sayhi();
//constructor 构造函数
function Fn() {
this.name = '韩梅梅';
this.age = 18;
console.log(this); //
}
var object = new Fn();
//constructor 构造函数
function Fn() {
this.name = '韩梅梅';
this.age = 18;
console.log(this); //
}
var object = new Fn(); // 指向的是构造函数创建的对象
// 另一种调用方式
Fn(); //此时指向的是window 相当于普通的函数调用