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 ...
随机推荐
- 比特币and区块链
比特币简介 比特币(Bitcoin:比特金)最早是一种网络虚拟货币,可以购买现实生活当中的物品.它的特点是分散化.匿名.只能在数字世界使用,不属于任何国家和金融机构,并且不受地域的限制,可以在世界上的 ...
- bean的创建(五)第二部分 寻找bean的工厂方法实例化
instanceWrapper = createBeanInstance(beanName, mbd, args); AbstractAutowireCapableBeanFactory.create ...
- SpringBoot日志相关
SpringBoot使用的是SLF4j当门面,Logback当实现完成 日志级别 数字越大,级别越高,框架只会输出大于等于当前日志级别的信息 ERROR 40 WARN 30 INFO 20 DEBU ...
- the license has been canceled
ideal 的 注册码并没有失效,却显示这个信息 the license has been canceled 如果用的是Windows系统,在hosts文件添加下边的ip及映射 0.0.0.0 acc ...
- IDEA:No SLF4J providers were found.
如果您是用IDEA 的 maven 写的 将slf4j的导入包 更改 为下列代码 <dependency> <groupId>org.slf4j</groupId> ...
- 工作笔记--对接三方Http接口遇到的问题
在使用 HttpClient 4.4 调用第三方 http api 时遇到了很多问题,还好最后都解决了,记录一下遇到的问题及解决办法,希望对同样有此问题的你有所帮助. 环境说明 首先说明一点是,对方的 ...
- Iterator-Java
在Java中,Iterator的作用就是为了方便处理集合中的元素.例如获取和删除集合中的元素. 在JDK8,Iterator接口提供了如下方法: 迭代器Iterator最基本的两个方法是next()和 ...
- Kubernetes容器集群管理环境 - Prometheus监控篇
一.Prometheus介绍之前已经详细介绍了Kubernetes集群部署篇,今天这里重点说下Kubernetes监控方案-Prometheus+Grafana.Prometheus(普罗米修斯)是一 ...
- mysql 学习第一天
RDBMS 术语 在我们开始学习MySQL 数据库前,让我们先了解下RDBMS的一些术语: 数据库: 数据库是一些关联表的集合. 数据表: 表是数据的矩阵.在一个数据库中的表看起来像一个简单的电子表格 ...
- 一文读懂tomcat组件--一个web服务器的架构演化史
1. tomcat是谁? 2. tomcat可以做什么? tomcat是一个web容器,可以将web应用部署到tomcat,由它提供web服务,一个web容器中可以部署多个web应用,这些we ...