100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 渡一教育公开课web前端开发JavaScript精英课学习笔记(七)对象和包装类

渡一教育公开课web前端开发JavaScript精英课学习笔记(七)对象和包装类

时间:2023-04-27 05:39:38

相关推荐

渡一教育公开课web前端开发JavaScript精英课学习笔记(七)对象和包装类

Js对象有三种

内置对象:ECMAScript 规定的对象,如:Math String Number Boolean Function Object...宿主对象:Js运行环境中的对象,如DOM文档对象,BOM浏览器对象。自定义对象:使用Js代码定义的对象。

自定义对象

使用字面量定义对象

<script type = "text/javascript">var obj = {name:"张三",age:22,sex : "male",health : 100,smoke : function(){document.write("I am smoking","<br/>");this.health--;},drink : function(){document.write("I am drinking","<br/>");this.health++;}}obj.wife = "小刘";//增加对象的属性delete obj.sex;//删除对象的属性obj.age = 25;//修改对象的属性document.write(obj.name + "的媳妇是" + obj.wife,"<br/>");//查看对象的属性obj.smoke();obj.smoke();document.write("My health:" + obj.health,"<br/>");obj.drink();document.write("My health:" + obj.health,"<br/>");</script>

使用系统自带的构造函数创建(Object(),Array(),Number()等)

<script type = "text/javascript">var person = new Object();person.name = "张三";person.age = 22;person.sex = "male";person.drink = function(){document.write("I am drinking","<br/>");}document.write(person.name + "的年龄:" + person.age,"<br/>");person.drink();</script>

使用自定义构造函数创建

自定义的构造函数命名采用大驼峰式命名方式,与普通函数没区别。使用 new 关键字产生一个新对象。

<script type = "text/javascript">//构造函数要遵守大驼峰式命名规则//构造函数 使用 New 关键字 会在函数中添加this变量,并隐式返回 this function Car(color){//var this;使用New关键字后默认添加this.name = "Car";this.height = "1400";this.width = "1600";this.lang = "4100";this.color = color;this.run = function(){document.write(this.name + " runing","<br/>");}//return this;使用New关键字后默认添加//设置返回值为引用类型时,将覆盖默认返回值//设置返回值为原始值类型时,不会覆盖默认返回值。}var car = new Car("red");car.run();car.name = "BMW";document.write("The color of " + car.name + " is " + car.color,"<br/>");</script>

对象属性的增删改查

对象属性访问方式:对象.属性名 或 对象["属性名"]

增加属性:对象.新属性名 = 初始值删除属性:delete 对象.属性名(在window下,用 var 声明的属性不能被删除)修改属性:对象.属性名 = 新值查询属性:变量 = 对象.属性名

<script type = "text/javascript">function Father(){} //定义一个构造函数var father = new Father();//声明一个对象father.lastName = "zhang";//增加一个属性,并赋初值console.log(father.lastName);father.lastName = "李";//修改属性值console.log(father.lastName);var name = father.lastName;//读取属性值console.log(name);delete father.lastName;//删除属性console.log(father.lastName);</script>

包装类

把基本数据用引用类型包裹起来,添加一些属性和方法,以便于操作基本数据类型。如Js系统内置的:Boolean、Number和 String

<script type = "text/javascript">//系统提供原始数据类型的包装类,使用包装类转换后原始值就变为引用类型。可以有属性和方法。//经过包装类包装的原始值,具有原始值的功能。//使用属性访问器试图访问原始值属性时,会隐式把原始值转为引用类型,实际上这个操作并不是操作原始值。var demo = "abcdef";//变量的类型按照第一次赋值时的类型确定的。这里是字符串类型。demo.name = "aaaaaa";//隐式转为引用类型并给引用类型的属性赋值,但没有任何变量存储这个引用类型,所以这句执行后引用对象自动销毁。console.log(demo.name);//隐式转为引用类型并获取引用类型的属性,但这个引用类型的name属性并没有赋值。var str = new String("abcd");//把字符串转换为引用类型,这个操作就是包装,String是包装类。var num = new Number(123);var bool =new Boolean(0);console.log(str,num,bool);</script>

练习题

<script type = "text/javascript">function Person(name, age, sex){var a = 0;this.name = name;this.age = age;this.sex = sex;this.say = function(){a ++;document.write("a = " + a,"<br>");}console.log(a,this);}var oPerson = new Person();//每次创建新对象就会产生一个闭包,变量 a 的作用域是独立的。oPerson.say();//1oPerson.say();//2var oPerson1 = new Person();//每次创建新对象就会产生一个闭包,变量 a 的作用域是独立的。oPerson1.say();//1</script>

练习题

<script type = "text/javascript">var x = 1,y = z = 0;function add(n){return n = n + 1;}y = add(x);function add(n){//这个函数将覆盖上面的同名函数,预编译原理。return n = n + 3;}//x,y,z的值是什么?console.log(x,y,z);//1,4,0</script>

练习题

求一个字符串的字节长度。

<script type = "text/javascript">//写一个函数,返回字符串的字节长度。string.charCodeAt(i)可以获取Uncode编码大于255为汉字。var a = "Hello,您好";function getBytesLength(a){var len = a.length;for(var i = 0; i < a.length ; i ++){if(a.charCodeAt(i) > 255){len ++;}}return len;}var b = getBytesLength(a);console.log(b);</script>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。