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 ...
随机推荐
- iView学习笔记(一):Table基本操作(包含前后端示例代码)
iView表格操作 1.前端准备工作 首先新建一个项目,然后引入iView插件,配置好router npm安装iView npm install iview --save cnpm install i ...
- CentOS7源码安装Nginx
系统平台:腾讯云服务器 CentOS 7.3 64位 一.安装编译工具及库文件 [root@VM_0_5_centos ~]# yum install -y make zlib zlib-devel ...
- JS面向对象编程(一):封装
js是一门基于面向对象编程的语言. 如果我们要把(属性)和(方法)封装成一个对象,甚至要从原型对象生成一个实例,我们应该怎么做呢? 一.生成对象的原始模式 假定把猫看 ...
- Android 开发环境之 VMware 虚拟机(android8.1)
VM版本14 在官网下载androidx86的VMDK文件 官方下载地址 (VMDK文件是VMware的专用文件,比iso镜像文件安装要简便许多,内部已经配置好了,只需要按照虚拟机安装普通流程即可) ...
- codeforces1088D_Ehab and another another xor problem交互题
传送门 一道考验思维的交互题 大致思路就是从最高的二进制位向下询问 代入例子比如: 5 6 6 5 7 4 6 4 讨论一下 交互题的重点学会推理和归纳 #include <bits/stdc+ ...
- 转载 | embed用法(网站中视频、音频的添加)
网站中添加视频: <embed src="http://player.video.qiyi.com/390cf6c74450e4c70b7bd2d883169914/0/0/w_19r ...
- android ——后台下载
这次的这个demo想要实现一个后台下载文件的功能,下载的时候会有一个告知进度的通知, 使用的依赖库就一个: compile 'com.squareup.okhttp3:okhttp:3.9.0' 大体 ...
- [趣学程序]java的常用类之String
java基础之常用类 String类 String表示字符串,所谓字符串,就是一连串的字符,是java中最常用的类之一. String是不可变类,一旦String对象被创建,包含在对象中的字符序列(内 ...
- 实测win10 efi启动及centos7双系统引导顺序修改
安装win10 安装win10过程中,系统自动建立esp分区,分区格式为FAT16,目录如下 1,EFI/Boot文件夹保持不动 删除 EFI/Microsoft/boot/ 文件夹下面除BCD文件外 ...
- HTTP请求包和响应包
HTTP请求包 HTTP响应包