创建对象的6种方式

1、创建对象的6种方式

对象:无序的属性的集合,key 字符串(不重复),value 任何数据类型

​ 表现方式:{ “key”:value,“key2”:value2,“key3”:function(){ } } : 映射 = 赋值

1)new Object()

var x="age";

var obj=new Object();
    obj.name="gao";
    obj.x=18;   // .字符串
    obj[x]=16;  // [变量]

console.log(obj);
  1. 字面量
var x="hooby";
var obj={ "name":"gao","age":18 };

    obj.sex="男";
    obj[x]="唱歌"
    obj.say= function (){
    }

console.log(obj);

创建 具有 相同 属性名 的 多个对象

3)工厂函数

// 优点: 返回 新对象,互不影响
// 缺点: 代码重复(相同方法)、
//       没有从属(不能知道对象从那里来)-->instanceof 只能判断 是 对象,不能判断属于谁
function students(name,age){
  var obj={
  "name":name,
  "age":age,
  "say":function(){}
}
	return  obj;
}
/*
工厂模式写法
	1、创建函数
	2、传入参数
	3、函数内创建对象
	4、retrun 对象

*/
/*
	调用:
		函数名(参数)
*/
var obj1 = students("gao",18);
console.log(obj1);
// 没有从属(不能知道对象从那里来)-->instanceof 只能判断 是 对象,不能判断属于谁
console.log(obj1 instanceof Object); //true
console.log(obj1 instanceof students);//false

4)构造函数

//优点: 有从属
//缺点: 代码重复(相同方法)、
//共识:构造函数首字母大写
function Students(name,age){
  this.name= name;
  this.age= age;
  //代码重复(相同方法)
  this.say=function(){
  }
}
/*
构造函数写法:
1、创建函数
2、传入参数
3、this.属性名 = 值
*/
/*
调用:
var obj =new 构造函数(参数)
*/
var obj1= new Students("gao",19);
console.log(obj1);
console.log( obj1 instanceof Object );//true
console.log( obj1 instanceof Students );//true 有从属

5)原型对象

原型:每个函数中都有一个 prototype 属性 ,属性的值是对象,这个对象 叫原型对象

// 优点: 公共/相同 的 属性 、方法  不重复 
//       有从属关系
// 缺点: 原型上的 属性不可单独改变
function Fn(){

}

Fn.prototype.name="高";
Fn.prototype.age=19;
Fn.prototype.say=function(){
  
};

var obj1=new Fn();
console.log("obj1",obj1);

6)组合模式 +(构造函数模式 +原型模式)

// 组合模式 (构造 + 原型)

// 有从属关系
// 不重复

// 属性 定义在 构造函数 内
function Fn(name,age){
  this.name=name;
  this.age=age;
}
// 方法 定义在 构造函数的 原型对象上
Fn.prototype.say=function(){
	console.log("哈哈哈哈哈");
}

var obj1= new Fn("gao",12);
var obj2= new Fn("王",19);

console.log("obj1",obj1);
console.log('obj2', obj2);


obj1.say();
obj2.say();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值