javaScript 基础知识汇总(四)
1、对象
概念:对象可以通过花括号{...} 和其中包含一些可选的属性来创建。 属性时一个键值对,键是一个字符串,值可以是任何类型。
对象的创建
let user = new Object(); //构造函数 的语法
let user = {}; //"字面量" 的语法
对象的属性:
 let user = {  //一个对象
      name : "John",  //键“name"  ,值"John"
      age:30             //"键”age“ ,值 30
 };
 属性有键 ,在冒号的前面”:“,值在冒号的右边
对象属性的添加和删除
user.sex = "man"; //对象属性的添加
delete user.sex; //对象的的删除
对象中方括号的使用
//处理多词属性
let user = {}; user["like birds"] = true;//设置 alert(user["like birds"]); //true 使用 delete user["like birds"]; // 删除
计算属性
//例子一:
let fruit ="apple";
let bag = {
[fruit]:5
};
alert(bag.apple); //例子二:
let fruit = "apple";
let bag = {};
bag[fruit] = 5;
//例子三
let fruit = "apple";
let bag = {
[fruit + "test"]:5;
};
alert(bag.fruittest);
属性值简写
当属性值的和键相同时可以如下所写
let user = {
    name,   //此处  name 和 name:name 相同
    age:13
}
对像属性存在值的检查
判断的方式 通过获取属性如果为undefined 则不存在,另一种方式为使用 in 关键字,但也存在特殊情况。具体示例如下:
 let user = {);
 alert( user.isExist==undifined) //true  表示这个属性不存在
 alert("isExist" in user); //false   属性不存在
 //特殊情况
 let obj = {
     test:undefined
 }
 alert(obj.test==undefined) //false ,但是这个属性存在,所以这时候使用这种方式就不合适
  alert("test" in obj); //true  表示这个属性存在。
for ... in 循环
 let user = {
   name: "John",
   age: 30,
   isAdmin: true
 };
 for(let key in user) {
   // keys
   alert( key );  // name, age, isAdmin
   // 属性键的值
   alert( user[key] ); // John, 30, true
 }
引用复制
 let user = { name: 'John' };
 let admin = user;
 admin.name = 'Pete'; //  改变 "admin" 的引用
 alert(user.name); // 'Pete', changes are seen from the "user" reference
 上面的例子展示了只存在一个对象,就像我们的抽屉有两把钥匙,如果一个钥匙(admin)去使用了
抽屉,稍后使用另外一个钥匙(user)打开的时候,就会看到有变化。
比较引用
//两个引用指向同一个对象的时候他们相等。
let a = {};
let b = a; // 复制引用 alert( a == b ); // true,两个变量指向同一个对象
alert( a === b ); // true //如果是两个不同的属性,他们就不相等,即使都是空的。
let a = {};
let b = {}; // 两个独立的对象 alert( a == b ); // false
常量对象
//一个被 const 修饰的对象可以被修改。
const user = {
name: "John"
}; user.age = 25; // (*) alert(user.age); // 25
//但是不能修改user这个对象
const user = {
name: "John"
}; // 错误(不能再给 User 赋值)
user = {
name: "Pete"
};
对象复制和合并 Object.assign
复制一个对象的变量也等同于创建了此对象的另一个引用。
//用原始的代码操作
let user = {
name: "John",
age: 30
}; let clone = {}; // 新的空对象 // 复制所有的属性值
for (let key in user) {
clone[key] = user[key];
} // 现在复制是独立的复制了
clone.name = "Pete"; // 改变它的值 alert( user.name ); // 原对象属性值不变
用Object.assign 来实现
  语法:Object.assign(dest[, src1, src2, src3...])
- 参数 dest和src1, ..., srcN(可以有很多个)是对象。
- 这个方法复制了 src1, ..., srcN的所有对象到dest。换句话说,从第二个参数开始,所有对象的属性都复制给了第一个参数对象,然后返回dest。let user = {
 name: "John",
 age: 30
 }; let clone = Object.assign({}, user);特殊情况,对象中仍有对象 let user = {
 name: "John",
 sizes: {
 height: 182,
 width: 50
 }
 }; let clone = Object.assign({}, user); alert( user.sizes === clone.sizes ); // true,同一个对象 // user 和 clone 共享 sizes 对象
 user.sizes.width++; // 在这里改变一个属性的值
 alert(clone.sizes.width); // 51在这种情况下,对象内部的对象并没有完全复制,而只是复制了对象的的值,在这种情况下,要再次判断,或者选择完善的j库 
javaScript 基础知识汇总(四)的更多相关文章
- javaScript 基础知识汇总 (十四)
		1.回调 什么是回调? 个人理解,让函数有序的执行. 示例: function loadScript(src,callback){ let script = document.createElemen ... 
- JavaScript基础知识汇总
		1. 图片热区: <img src="logo.jpg" usemap="#logo"> <map id="logo" n ... 
- javaScript 基础知识汇总(三)
		1.循环:while 和 for while 循环 while(condition){ //代码 循环体 } do ... while 循环 let i =0; do { //循环体 }while( ... 
- javaScript 基础知识汇总(六)
		1.基本类型与对象的区别 基本类型:是原始类型的中的一种值. 在JavaScript中有6中基本类型:string number boolean symbol null undefined 对 ... 
- javaScript 基础知识汇总(五)
		1.垃圾回收 JavaScript 的内存管理是自动的,不能强制执行或者阻止执行 可达性 JavaScript中主要的内存管理概念是可达性. 什么是可达性? 定义一个对象 let user = { n ... 
- javaScript 基础知识汇总(二)
		1.运算符 术语或者叫法:一元运算符.二元运算符.运算元(参数) let x=0; x=5+2; //5和2为运算元,“+” 为二元运算符: x=-x; //"-" 为一元运算符 ... 
- javascript 基础知识汇总(一)
		1.<script> 标签 1) 可以通过<script> 标签将javaScript 代码添加到页面中 (type 和language 属性不是必须的) 2)外部的脚本可以通 ... 
- JavaScript 基础知识汇总目录
		一.标签.代码结构.现代模式.变量.数据类型.类型转换 GO 二.运算符.值的比较.交互.条件运算符.逻辑运算符 GO 三.循环 while 和 for .switch语句.函数.函数表达式和箭头函数 ... 
- javaScript 基础知识汇总 (十三)
		1.Class 在JavaScript中 calss即类是一种函数 基本语法 class Myclass{ constructor(){} method1(){} method2(){} method ... 
随机推荐
- CoreCLR Host源码分析(C++)
			废话不多说,直接上源码: 1.在托管程序集里面执行方法 HRESULT CorHost2::ExecuteAssembly(DWORD dwAppDomainId,//通过CreateAppDomai ... 
- spring-boot项目的docker集成化部署(一)
			目录 spring-boot项目的docker集成化部署 前言 基本思路与方案 基本步骤 准备源码 服务器和基础环境 结语 1. 本文总结: 2. 后期优化: spring-boot项目的docker ... 
- 洛谷P2630 题解
			我先讲一下我的思路 将A,B,C,D四种操作用函数储存起来: 枚举所有可能出现的情况:A,B,C,D,AA,AB,AC,AD,BB,BC,BD,CC,CD,DD,ABC,ABD,ACD,BCD,ABC ... 
- (一)Mybatis基本配置,Statement方式,动态代理增删改查
			首先明白Mybatis是干什么的,之前使用jdbc操作数据库时候要写很多语句,获取光标,连接,获取具体对象进行相应操作,代码过于繁琐,所以现在有了Mybatis,它将这个操作整合在了一起,你不需要关心 ... 
- java的八种数据类型
			1)四种整数类型(byte.short.int.long): byte:8 位,用于表示最小数据单位,如文件中数据,-128~127 short:16 位,很少用,-32768 ~ 327 ... 
- exe4j打包--exe转安装包
			前面一篇已经详细的说明了打包成exe的步骤了,下面谈谈exe如何压缩成安装文件.这里用到之前的另外一个软件,具体软件看这篇文章 exe4j打包成exe 打开inno 编辑器 打开软件后我们选择 用[脚 ... 
- 面试java后端面经_2
			1 自我介绍(介绍一下帅气的自己哦) 2 对象深浅复制(浅复制:对象内引用的对象不会复制,深复制会把引用对象复制.如何进行深浅复制,这块不懂的童鞋可以百度一下) 3 wait方法和sleep方法的区别 ... 
- tensorflow学习笔记——图像数据处理
			喜欢摄影的盆友都知道图像的亮度,对比度等属性对图像的影响是非常大的,相同物体在不同亮度,对比度下差别非常大.然而在很多图像识别问题中,这些因素都不应该影响最后的结果.所以本文将学习如何对图像数据进行预 ... 
- 简述关于ASP.NET MVC与.NET CORE 的区别
			简述关于ASP.NET MVC与.NET CORE的区别1.关于ASP.NET 关于MVC刚开始接触这个技术的时候我经常不理解他们的名字,我相信许多学ASP.NET开发人员开始接触MVC应该也和我一样 ... 
- Yii的srbac拓展中“用户已经获授权项”无法查看
			Yii的srbac拓展中“用户已经获授权项”点下拉框,选择一个有权限的用户时,根本无法列出权限. 原因是srbac把数据库的表中的ID默认为数字,像 123这样,但如果不是数字像这样 'y0f22ff ... 
