基础知识 js

 

Object没有prototype属性

 

__proto__

prototype

Object

Function

 

 

 

几种Object方法的小结:

Object方法

返回值

涉及属性

说明

Object.entries()

数组

自有&&可枚举

数组元素是属性名称-属性值

Object.keys()

数组

自有&&可枚举

数组元素是属性名称

Object.values()

数组

自有&&可枚举

数组元素是属性值

Object.getOwnPropertyNames()

数组

自有&&(可枚举+不可枚举)

数组元素是属性名称

for-in

数组

(自有+原型链)&&可枚举

数组元素是属性名称

 

 

问题

函数表达式有什么用?

解答

唯一的用处是附加为已有组件/Object的方法

获取函数名称

function test6 (){

  console.log(arguments.callee.name);

}

 

test6();

 

浅拷贝和深拷贝

浅拷贝:假如源对象的属性值是一个对象的引用,拷贝之后的目标对象值也只能是引用,指向原来对象。

类似于:js 中的引用类似于C++中的指针,复制引用类型的属性值,如同复制指针类型的属性值。复制之后,新生成了一个指针,但指针值不变,仍然指向原有对象。

 

浅拷贝例子
 1 let obj1 = { a: 0 , b: { c: 0}}; 
 2 let obj2 = Object.assign({}, obj1); 
 3 console.log(JSON.stringify(obj2)); // { a: 0, b: { c: 0}} 
 4 
 5 obj1.a = 1; 
 6 console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 0}} 
 7 console.log(JSON.stringify(obj2)); // { a: 0, b: { c: 0}} 
 8 
 9 obj2.a = 2; 
10 console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 0}} 
11 console.log(JSON.stringify(obj2)); // { a: 2, b: { c: 0}}
12  
13 obj2.b.c = 3; 
14 console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 3}} 
15 console.log(JSON.stringify(obj2)); // { a: 2, b: { c: 3}} 
 
深拷贝:生成一个全新对象,相关的引用与源对象无任何关系,完全独立于源对象,占用单独的内存空间
1 obj1 = { a: 0 , b: { c: 0}}; 
2 
3 // 生成一个完全彻底的新对象
4 let obj3 = JSON.parse(JSON.stringify(obj1)); 
5 obj1.a = 4; 
6 obj1.b.c = 4; 
7 console.log(JSON.stringify(obj3)); // { a: 0, b: { c: 0}}
 
ES6 - const

const 实际上保证的是不是变量的值不得改动,而是变量指向的内存地址不得改动。

对于简单数据类型(数值,字符串,布尔值),值就保存在指向的内存地址等同于常量。

对于复合类型的数据(对象和数组)变量指向的内存地址只是一个指针,只能保证指针是不变的,不保证指针指向的内容是不变的.

 

ES6 - 解构

参考此处:ES6非常棒的特性-解构

 

基本描述

解构的目的是简化变量的获取和使用,减少程序代码的书写量。

解构就是从字符串、数组或者object中提取一个或一些元素的值并存入相对更简单的变量中。

要点1:解构的数据来源是能够存放多个元素的对象,例如字符串存放多个字符,数组存放多个元素,object存放多个属性。

要点2:解构的数据目的变量一定比解构源更简单。

 

解构带上默认值

如果我们要解构的对象的属性没有值,甚至属性不存在。这个时候,我们需要一个默认值,通常我们可能会这么写:

let name = person.name || "default name";

 

语言特点

 

C++是一门让人越来越来清晰的语言,C++是一门清晰的语言

js是一门让人越来越来糊涂的语言,js是一门稀里糊涂的语言

相关疑问

js 为何需要不可枚举属性?

js 在何处只能用函数表达式,无法用函数声明

参考资料:https://www.jianshu.com/p/baa5c408b3a6

posted on 2020-02-18 08:03  micemik  阅读(177)  评论(0编辑  收藏  举报

导航