知识梳理之对象,数据类型

前端笔记

    • 对象属性
      • 两种数据类型
        • 六种基础数据类型
        • 三种常用引用类型
    • 预解析
      • 两种数据类型的区别
        • 1.值是否可变
        • 2.比较,是否两个数据类型的比较
        • 3.值存放的位置
        • 4.复制的情况
      • 内存分配和垃圾回收
      • 检测数据类型
        • 基本数据类型检测:
        • 引用类型(对象类型)检测
          • 用来更精准的控制对象的数据类型检测(包含数组和对象)
          • instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链
          • constructor 也能判断数据类型
    • 创建对象的五种方式
      • 1.通过Object 类创建对象
      • 2.通过字面量创建对象
      • 3.工厂方式定义
      • 4.构造函数方式定义
      • 5.通过Object.create 方式定义
      • 6.原型方式创建对象
      • 7.混合模式
      • 8.class 类定义对象
    • 过程式开发与面向对象开发
      • 面向过程
      • 面向对象
      • 面相对象的三大特点
        • 封装
        • 继承
        • 多态
      • 面向对象的五大基本原则
        • 单一职责原则:
        • 开放封闭原则
        • 接口分离原则
      • 内部对象
      • 浏览器对象(宿主对象)
      • 自定义对象
      • 函数对象和普通对象的区别:
      • 对象属性的读取
      • 设置对象属性
      • 删除对象属性
      • 对象属性查找
      • 属性检测
      • 对象属性遍历
      • 序列化对象
      • 属性的特性,属性描述符
        • 数据属性
        • 访问器属性:
      • JavaScript 中的可枚举属性与不可枚举属性
        • 对象属性:
        • 对象方法
      • Array 扩展
  • 组件、插件、模块、框架、架构
    • 组件
    • 插件
    • 模块
    • 框架
    • 架构

对象属性

两种数据类型

六种基础数据类型

六种基础数据类型(null,undefined,boolean,string,number,symbol)
以key,value 存取在栈区

 var str = '123' ;var num = 1;var bol =true;var km = null;//es6中定义一种独一无二的值var sym=Symbol("name");

三种常用引用类型

3种常用引用类型:object ,array,function 栈区存放的是指针(地址),值是放在堆中的

var arr=[];
var obj={}
var fun=function(){};
const kk={name:"xj"};
kk.color="red";
console.log(kk);//Object {name: "xj", color: "red"}
const kk2="xj";
kk2="kk";
console.log(kk2);//Uncaught TypeError: Assignment to constant variable.var obj = new Object();
var obj_arr= new Array();
//实例化了一个String对象,不是基本数据类型
var s1 = new String('123');
var s4 = new String('123');
//实例化的s1和s4都是实例化的一个对象,对象都是引用类型,所以s1和s4 是不相等的。
s1==s4 //false  //函数传参
var s2 = String('123');
//直接字面量
var s3='123';
console.log(s1,s2,s3);//String {0: "1", 1: "2", 2: "3", length: 3, [[PrimitiveValue]]: "123"}0: "1"1: "2"2: "3"length: 3__proto__: String[[PrimitiveValue]]: "123" "123" "123"
s1===s2;//false
s1===s3;//false
s2===s3;//true
s1==s2;//true
s2==s3;//true
s1==s3;//true
//等号运算符,从左往右
s1==s2==s3;//false

预解析

预解析只能发生在通过var 和function定义的关键字身上。
预解析案例:

// 案例1
var a=1;
function f(){
console.log(a); //1 读取外部的变量1
a=2;
console.log(a); //2 全局变量a的值改为2
}
f();
console.log(a); //2 a的值为2
//案例2
var a;
var b;
(function(){
console.log(a); //undefined
console.log(b); //undefined
var a=b=3;  //等价于 var a=3; b=3;
console.log(a); //3  a为局部变量
console.log(b); //3
})();
console.log(a); //undefined  
console.log(b); //3
//案例3
var a = 1;
function f(){console.log(a); //undefinedvar a = 3;console.log(a); //3
}
f(); 
console.log(a); //1
//案例4var a = 1;               function f(){console.log(a);   //undefined            a = 2;              console.log(a);   //2        var a = 3;                                              console.log(a); //3}f();                console.log(a); //1
//案例5
var a=1;
function f(){console.log(a); //1a=2;console.log(a); //2
}
f(); 
console.log(a); //2

两种数据类型的区别

类比面试选人(来自哪里(位置),可靠性(忠诚度),干活情况(复制),选谁(


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部