2021-08-08Javascript对象

Javascript对象

1.Javascript前言

在这里插入图片描述

任何东西都可以是对象,对象都有属性

2.Javascript对象定义

1.new关键字创建对象
var obj = new Object;
obj.name = '马志强';
obj.age= 70;
obj.color = 'green';
obj.eat = function (){
	console.log('烤鸭');
}
console.log(obj);
2.工厂类创建对象
// 创建工厂,设置好函数的形参(属性)
function testFactory(name,age,color){
	var obj = new Object();
	obj.name = name;
	obj.age = age;
	obj.color = color;
	return obj;
}
// 给工厂传参
var shoes = testFactory('Adidas',37,'white');
console.log(shoes);
var shoes2 = testFactory('Nike',41,"skyblue");
console.log(shoes2);
3.构造方法创建对象
1.结构

function 方法名字 (){},方法名字首字母大写

2.创建构造器,设置好形参(属性)
function Animal(name,age,type){
// this后面是属性名,=后面是属性值
	this.name = name;
	this.age = age;
	this.type = type;
}
3.调用构造器,new一个函数名,然后传参
var p = new Animal('二筒',1,'cat');
console.log(p);
4.为对象添加新的属性
p.hobby = '罐头';
console.log(p);
5.为对象添加新的方法
p.sleep = function(){
	console.log('every where')
}
console.log(p);
6.新属性和方法被添加到p,而不是其他的animal对象上
var p1 = new Animal('二筒',0.8,'UScat');
console.log(p1)
7.构造函数的返回值
  • 不需要return,直接将对象返回
  • 构造函数会直接将对象给变量,而不是通过return返回的
function People(name,heigth,gender){
	this.name = name;
	this.height = heigth;
	this.gender = gender;
// 如果构造函数return了基本数据类型,返回的是对象,如果return了引用数据类型,那么返回的是数组
// 但是构造函数的左右是为了创建对象,不是为了返回值,所以构造函数return就违背了构造函数的设计思想啊,这里可以把构造函数理解为一个构造器,如果需要使用,就new一个函数名来调用
	// return 111;
	// return [1,2,3,4];
}
var p1 = new People('张三',140,'male');
console.log(p1);
4.字面量创建对象

{属性名(key):属性值(value),属性名2:属性值2}
key可以加引号也可以不加,默认不加,特殊情况下得加,比如key命名不规范,包含特殊字符

var person = {name:"red romance", age:18, color:"yellow"};

3.Javascript对象属性

1.定义对象的属性
  • 对象的属性是有键值对组成的 >>> 键(key),值(value)
  • 键和值,用冒号隔开,name : ‘张三’
  • 键被称作对象的属性,值被称作属性值
  • 对象的属性基本上都是字符串,大部分属性的引号可以省略不写,命名不规范或者 出现特殊字符时需要加引号
2.给对象添加属性
var cat = {name:'二筒',age:0.8,gender:'female'};
	console.log(cat);
	// (1)点语法(函数名加点加要添加的属性,等号后面传参)
	cat.color = 'black + white';
	console.log(cat);
	// (2)中括号语法,需要在中括号内给属性加引号(函数名后面中括号,中括号内引号,引号内key,等号后面传参)
cat['type'] = 'USshort';
console.log(cat);
  • 点语法和中括号语法的区别

    • 点语法在遇到key有特殊字符的时候,就不生效了

    • // cat.nose-color = 'pink';
      // console.log(cat);
      cat['nose-color'] = 'pink';
      console.log(cat);
      

      点语法遇到变量替换,不会报错但是输出的结果是替换后的变量,不是要添加的key,容易造成误解

      var fp = 'fourPaw';
      cat.fp = 'pink';
      console.log(cat); */
      // 中括号语法可以完美解决这个问题,但是替换的变量在中括号内不加引号
      var fp = 'fourPaw';
      cat[fp] = 'pink';
      console.log(cat);
      // 实际的企业级开发中,点语法用的较多,因为简单,在命名key的时候遵守命名规则,不要搞特殊字符
      
3.修改对象属性
var tea = {name:'阿萨姆',price:5,'bg-color':'red'};
console.log(tea);
// 修改属性,有则改之,无则加勉(有这个属性就改了,没有这个属性就加上)
tea.price = 4.5;
console.log(tea);
tea.type = 'drink';
console.log(tea);
// 修改'bg-color',也不可以用点语法
// tea.bg-color = 'yellow';
// console.log(tea);
tea['bg-color'] = 'yellow';
console.log(tea);
// 变量替换的时候,也不可以用点语法
var bg = 'bg-color';
// tea.bg-color = 'green';
// console.log(tea);
tea[bg] = 'green';
console.log(tea);
4.删除对象属性
var milkTea = {name:'芋泥波波奶茶',price:33,'element-type':'water',likePeopleType:'women'}
delete milkTea.price;
console.log(milkTea);
// 删除'element-type'也不可以用点语法
// delete milkTea.element-type;
// console.log(milkTea);
// delete milkTea["element-type"];
// console.log(milkTea);
// 变量替换的时候,也不可以用点语法
var et = 'element-type';
// 此时不会有任何删除,因为函数内找不到et这个key
delete milkTea.et;
console.log(milkTea);
delete milkTea[et];
console.log(milkTea);
5.查询对象的属性
var company = {name:'Tencent',location:'广东省深圳市','a-type':'Internet'};
console.log(company);
console.log(company.name);
console.log(company['location']);
// 查询'a-type'不可以用点语法
// console.log(company.a-type);
console.log(company["a-type"]);
// 变量替换查询属性不可以用点语法
var n = 'name';
// 返回undefined,因为函数内没有n这个key
console.log(company.n);
console.log(company[n]);
6.对象的遍历(使用for in循环)
var women_Star = {name:'辛芷蕾',age:30};
// for in 默认情况下遍历的是key,相当于把key替换成x,所以遍历结果要想得到value,需要给x加[]
for(x in women_Star){
	console.log(x,women_Star[x]);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值