<!DOCTYPE html>
<html>
<head>
<meta charset = "utf-8">
<script>
//1我们可以抛开类,使用字面量来构造一个对象
var People1 ={
name : "chenzhitao",
printname : function(){
console.log(People1.name);
}
}
People1.printname();
//问题:太麻烦了,每次构建一个对象都是复制一遍代码如果想个性化,只能通过手工赋值,使用者必需了解对象详细
//这两个问题其实也是我们不能抛开类的重要原因,也是类的作用
//2使用函数做自动化
function createObj(age,name){
var obj = {
nick:name,
age:age,
printName:function(){
console.log(this.nick);
}
};
return obj;
}
var obj3 = new createObj("25","chenzhitao");
obj3.printName();
//问题:这种方法解决了构造过程复杂,需要了解细节的问题,但是构造出来的对象类型都是Object,没有识别度
//3 new 运算符接受一个函数 F 及其参数
function People (age,name) {
this.name = name;
this.age = age;
this.printname = function(){
console.log(age,name);
}
}
var p1 = new People(25,"chenzhitao");
p1.printname();
//问题:构造函数在解决了上面所有问题,同时为实例带来了类型,但可以注意到每个实例printName方法实际上作用一样,但是每个实例要重复一遍,大量对//象存在的时候是浪费内存
//4.抽象重复
//所有实例都会通过原型链引用到类型的prototype,prototype相当于特定类型所有实例都可以访问到的一个公共容器
function Person(name,age){
this.name = name;
this.age = age;
}
Person.prototype.printName = function(){
console.log(this.name);
}
var p2 = new Person("chenzhitao",25);
p2.printName();
</script>
</head>
</html>
JavaScript 对象
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 在ECMAScript中,所有对象并非同等创建的。 一般来说,可以创建并使用的对象有3种:本地对象、内置对象和宿主...
- 摘至:http://www.jb51.net/article/53391.htm 1. DOM 对象转成 jQue...
- 对象创建新方法 ES6允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。上面代码表明,ES6允许在...
- 总结《javascript高级程序设计》第六章有关于对象继承的内容。看这篇文章之前看js对象创建详解。对于OO语言...
- 我们知道,一个普通对象(非函数对象)是通过原型链实现面向对象的,那么函数对象作为一个对象,它的原型链指向什么? F...