1.对象的创建
- var obj = new Object();
obj.name = “XXX”; - var obj = {};
var obj = {
// 键值对
name: “孙悟空”,
age: 18,
test:{name:“唐僧”}
}; - 删除属性名 delete obj.属性值
- 读取对象属性值 obj.name
2.this指向
this指向一个对象,这个对象指函数执行的上下文对象
根据函数调用方式不同,传入参数不同
3.工厂创建对象,无法区分多种类型的对象
function person(name, age, gender) {
var obj = {};
obj.name = name;
obj .age = age;
obj.gender = gender;
obj.sayName = function () {
alert(obj.name)
};
return obj;
}
var obj3 = person("蜘蛛精", 22, "女");
obj3.sayName();
4.构造函数
普通函数直接调用,构造函数使用关键字new
- 立即创建一个对象
- 将新建对象设置为函数中this
- 逐行执行函数中的代码
- 将新建对象作为返回值返回
function Person(name, age, gender) {
this.name = name;
this.age = age;
this.gender = gender;
this.sayName = function () {
console.log(this.name);
};
//this.sayName = fun;
}
构造函数中的方法可以放在全局作用域中,减少内存开支,但是不安全污染全局域
5.原型对象
- 每创建一个函数,解析器都会向函数中添加一个prototype属性
- 普通函数prototype没有作用
- 构造函数会在对象创建时向对象添加一个隐含属性, __proto__属性查看
- 原型对象也有原型__proto__
- 检查自身使用hasOwnProperty console.log(dog.hasOwnProperty(“sayName”));
- //使用in检查对象中的属性,包括原型对象和本身
function Dog(name, age, gender) {
this.name = name;
this.age = age;
this.gender = gender;
Dog.prototype.sayName = function () {
console.log("sayHello");
};
}
var dog = new Dog("bbb", 121, "nv");
dog.sayName();
console.log(dog);
console.log(dog.__proto__ == Dog.prototype);
来源:CSDN
作者:兢兢业业的小学生
链接:https://blog.csdn.net/qq_17840121/article/details/103959245