2019web前端javascript--小白入门级理解对象和包装类

mac2022-06-30  22

写在前面:因为还没开始工作,可能有的部分有错,希望大家能指点出来,这是我看渡一的视频总结的笔记,所有的示例都来自视频,我算是一个搬运工了吧哈哈哈视频讲的很好,强烈推荐大家去看一看ヾ(◍°∇°◍)ノ゙

一.对象

(基础的变量类型:引用值)

1.对象的创建方法

1.字面量法 var obj = {};

2.构造函数法(可创造多个一样的对象) (1)系统自带的构造函数 Object(),Number(),Array() var num = new Number()

(2)自定义 function Person (){} var person = new Person //Person是函数,person是对象,函数命名方式遵守大驼峰方法

(3)对象的增删改查 增改查: 对象.属性 删: delete 对象.属性

注:构造函数的结构和函数没有任何区别

示例

/* function Car(color) { this.color = color;//输入参数,使函数灵动起来 this.name = 'BMW'; this.height = '1400'; this.lang = '4900'; this.weight = 1000; this.health = 100; this.run = function () { this.health --; } } var car = new Car('red'); var car1 = new Car('green');*/ /* //各改各的,两个人 car.run(); car.health;//99 car1.health;//100 */

构造函数创建的每个对象,互不干扰,只是初始状态长得一样

注: (1)当一个对象的属性没有时,会打印undefined,不会报错 (2)在内部添加属性 : 在外部添加属性 =

2.构造函数内部原理

1.在函数体最前面隐式的加上this={} 2.执行this.xxx = xxx; 3.隐式的返回this (有new才执行这三步!!) 有new就不可能返回原始值,会自动忽略掉原始值

示例

function Student(name,age,sex) { /* 1.var this ={ 2.往this空对象里传入属性 Student的AO{this:{name:'传入的参数'}}... name :'' age :'' sex :'' }; */ this.name = name; this.age = age; this.sex = sex; this.grade = 2017; // 3.return this; } var student = new Student('zhangsan',18); //有了new就能把 函数->构造函数

二.包装类

1.原始值是不能有属性和方法的 只有对象才有属性方法 对象有(obj,function,array)

2.不是所有数字都是原始值 var num = new Number(123) 数字的对象能参与运算,但是运算之后会回归为数(原始值)?未验证 字符串,布尔类型也同上

3.原始值是不能有属性和方法的,但是有了包装类就可以调用了

4.包装类使用方法: 将用new的方式给原始值添加属性,最后删除添加的结果 自定义的属性:原始值.属性 返回undefined 系统自带属性:原始值.属性 正常返回结果

例1.

var num = new Number(123);

可随意添加属性,也可参与运算 undefined和null都不能设置属性

例2.

var num1 = 4; num1.len = 3; //①new Number(num).len = 3;新建一个数字对象,让数字对象的len=3; 把结果扔掉 delete //②new Number(num).len,查看,已经删除了,不存在了 console.log(num1.len);//undefined

①②是两个不同的对象

例3.

//数组本身就有截断属性 var str = 'abcd'; str.length = 2; //new String('abcd').length = 2; delete//销毁的是新建的东西,没有销毁str的东西 //str没有length截断属性 console.log(str);//abcd //new String ('abcd').length,这是系统自带的属性,不会销毁 console.log(str.length)//4

例4.

var str = 'abc'; str += 1;//str = abc1 var test = typeof (str);//test == 'string' if(test.length == 6){ //new String('abc').sign='typeof的返回值可能为String' 然后delete test.sign = 'typeof的返回值可能为String'; } //new String('abc').sign console.log(test.sign);//undefined

原始值赋属性值的话,要调用包装类,相当于赋了跟没赋一样

最新回复(0)