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 ...
随机推荐
- 从flink-example分析flink组件(3)WordCount 流式实战及源码分析
前面介绍了批量处理的WorkCount是如何执行的 <从flink-example分析flink组件(1)WordCount batch实战及源码分析> <从flink-exampl ...
- backtracing
5月10日 1 37 Sudoku Slover public void solveSudoku(char[][] board) { if(board == null || board.length ...
- Nginx 的简单使用 (IIS,Asp.Net)
Nginx 的一些常见功能(windows,AspNet ,IIS) 下载 官方网站:https://nginx.org/en/download.html 下载,解压缩是这个样子 启动: 启动方式有两 ...
- Reactv16.8.6生命周期函数
组件生命周期函数 React 主动调用的方法,也可重写这些方法 生命周期图谱 当组件实例被创建并插入 DOM 中时,其生命周期调用顺序如下: constructor(props) 如果不需要初始化 s ...
- Java几种常见的排序算法
一.所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法.排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面. ...
- http客户端-性能比较系列-第一篇-单线程
系列文章: 单线程性能测试:https://www.cnblogs.com/victor2302/p/11077208.html 多线程性能测试:https://www.cnblogs.com/vic ...
- 【0805 | Day 8】Python进阶(二)
列表类型内置方法 一.列表类型内置方法(list) 用途:多个爱好.多个武器.多种化妆品 定义:[ ]内可以有多个任意类型的值,逗号分隔元素 # my_boy_friend = list(['jaso ...
- Spring入门(六):条件化的bean
1. 概念 默认情况下,Spring中定义的bean在应用程序启动时会全部装配,不管当前运行的是哪个环境(Dev,QA或者Prod),也不管当前运行的是什么系统(Windows或者Linux),但有些 ...
- ASP.NET 一个页上需要显示多个验证码
1.后台获取验证字节流,以字符串的形式返回到前端. public ActionResult GetValidateGraphic() { var validate = new ValidateCode ...
- sql server 日期近一年,同比
--近一年 ), , , ) SELECT CONVERT(VARCHAR, DATEADD(day, -DAY(GETDATE()), , ) --同比 ), , , ) SELECT CONVER ...