<!-- 基本数据类型 number string boolean null undefined Symbol -->
<!-- 引用数据类型 object(Function Array RegExp) -->
<!-- es6 提供一个基本数据类型Symbol -->
<!-- Symbol代表了唯一的一个数 不可以new -->
/* console.log('1'==='1'); *//* =>true */
/* console.log( Symbol('1') == Symbol('1') ); */
/* 用Symbol包裹的数据是唯一的 独一无二的 */
/* console.log( Symbol('1') ); */
/* 首字母开头大写的叫 构造函数 可以new */
// let obj = new Object()
// console.log(obj);
/* let a = new Symbol('username') 不可以new*/
/* 两个人在同时开发一个页面 */
/* 小A定义了对象obj */
// let obj = {
// username:"zhangsan"
// }
// /* 小B 不知道这个obj 有的key叫username
// 把username 重新赋值了 造成了问题*/
// obj.username = 'lisi'
// console.log(obj);
// let obj = {
// [Symbol('username')]: "zhangsan"
// }
// console.log('old',obj);
// obj.username = 'lisi'
// console.log('new',obj);
// [] 如果里面的时候一个变量 可以直接写 o[user1]
// 这里面的user1 就是一个变量
// o['user1'] =>{user1:'zhangsan'}
// let user1 = 'username';
// let o = {}; /* => {username:'zhangsan'} */
// o[user1] = 'zhangsan'
工厂模式
/*软件工程领域的 一 -种设计模式*/
/*抽象了创建对象的过程*/
/*通过函数封装创建对象的细节*/
/*工厂模式的缺点*/
/*看不出类型(比如是时间对象会具有时间对象的属性和方法) -解决:构造函 */
/*函数重复、浪费资源(消耗内存) --解决:原型*/
<!-- 系统提供的构造函数-->
<!-- String Number Boolean object RegExp Date Array -->
<!-- 构造函数- “般以大写字母开头-->
<!--构造函数也是函数,只不过可以用来创建对象-->
<!-- 与工厂模式对比
没有显式创建对象
直接将 属性和方法赋给了this对象 -->