JavaScript对象与对象原型

最后都变了- 提交于 2020-02-01 03:26:23

1.对象的创建

  1. var obj = new Object();
    obj.name = “XXX”;
  2. var obj = {};
    var obj = {
    // 键值对
    name: “孙悟空”,
    age: 18,
    test:{name:“唐僧”}
    };
  3. 删除属性名 delete obj.属性值
  4. 读取对象属性值 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

  1. 立即创建一个对象
  2. 将新建对象设置为函数中this
  3. 逐行执行函数中的代码
  4. 将新建对象作为返回值返回
 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.原型对象

  1. 每创建一个函数,解析器都会向函数中添加一个prototype属性
  2. 普通函数prototype没有作用
  3. 构造函数会在对象创建时向对象添加一个隐含属性, __proto__属性查看
  4. 原型对象也有原型__proto__
  5. 检查自身使用hasOwnProperty console.log(dog.hasOwnProperty(“sayName”));
  6. //使用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);
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!