asp网站怎么做404页面dw建设网站步骤
- 作者: 多梦笔记
- 时间: 2026年02月16日 03:54
当前位置: 首页 > news >正文
asp网站怎么做404页面,dw建设网站步骤,软件开发平均工资,沈阳网站建设定制对象(object)是最基本、最通用的类型#xff0c;具有复合性结构#xff0c;属于引用型数据#xff0c;对象的结构具有弹性#xff0c;内部的数据是无序的#xff0c;每个成员被称为属性。在JavaScript中#xff0c;对象是一个泛化的概念#xff0c;任何值都可以转换为对…对象(object)是最基本、最通用的类型具有复合性结构属于引用型数据对象的结构具有弹性内部的数据是无序的每个成员被称为属性。在JavaScript中对象是一个泛化的概念任何值都可以转换为对象所有对象都继承于Object类型拥有很多原型属性。 1、定义对象 在JavaScript中定义对象有3种方法下面进行详细介绍。 1.1、构造对象 使用new运算符调用构造函数可以构造对象。具体语法格式如下 var objectName new functionName(args);简单说明如下 objectName返回的实例对象。functionName构造函数。args参数列表。 【示例】使用new运算符调用不同的类型函数构造不同的对象 var o new Object(); //定义一个空对象var a new Array(); //定义一个空数组var f new Function(); //定义一个空函数1.2、对象直接量 使用直接量可以快速定义对象具体语法格式如下 var objectName {属性名1 : 属性值1,属性名2 : 属性值2,……属性名n : 属性值n};在对象直接量中属性名与属性值之间通过冒号进行分隔属性值可以是任意类型的数据属性名可以是JavaScript标识符或者是字符串型表达式。属性与属性之间通过逗号进行分隔最后一个属性末尾不需要逗号。 【示例1】使用对象直接量定义1个对象 var o { //对象直接量a : 1, //定义属性b : true //定义属性}【示例2】如果不包含任何属性则可以定义一个空对象 var o { } //定义一个空对象直接量提示ECMAScript 6新增Map类型的数据结构本质与Object结构类似。两者的区别Object强制规定key只能是字符串而Map结构的key可以是任意对象。 1.3、使用create Object.create是ECMAScript 5新增的一个静态方法用来定义对象。该方法可以指定对象的原型和对象特性。具体语法格式如下 Object.create(prototype, descriptors)参数说明如下 prototype必须参数指定原型对象可以为null。 descriptors可选参数包含一个或多个属性描述符的JavaScript对象。属性描述符包含数据特性和访问器特性其中数据特性说明如下 value指定属性值。writable默认为false设置属性值是否可写。enumerable默认为false设置属性是否可枚举(for/in)。configurable默认为false设置是否可修改属性特性和删除属性。 访问器特性包含两种方法简单说明如下 set()设置属性值。get()返回属性值。 【示例】使用Object.create定义一个对象继承null包含两个可枚举的属性size和shape属性值分别为“large”和“round” var newObj Object.create(null, {size: { //属性名value: large, //属性值enumerable: true //可以枚举},shape: { //属性名value: round, //属性值enumerable: true //可以枚举}});console.log(newObj.size ); //largeconsole.log(newObj.shape ); //roundconsole.log(Object.getPrototypeOf(newObj)); //null2、对象的属性 属性也称为名/值对包括属性名和属性值。属性名可以是包含空字符串在内的任意字符串一个对象中不能存在两个同名的属性。属性值可以是任意类型的数据。 2.1、定义属性 1.直接量定义 在对象直接量中属性名与属性值之间通过冒号分隔冒号左侧是属性名右侧是属性值名/值对之间通过逗号分隔。 在对象直接量中属性名与属性值之间通过冒号分隔冒号左侧是属性名右侧是属性值名/值对之间通过逗号分隔 var obj { //定义对象x:1, //属性y:function(){ //方法return this.x this.x;}}2.点语法定义 【示例2】通过点语法可以在构造函数内或者对象外添加属性 var obj {} //定义空对象obj.x 1; //定义属性obj.y function(){ //定义方法return this.x this.x;}3.使用defineProperty 使用Object.defineProperty()函数可以为对象添加属性或者修改现有属性。如果指定的属性名在对象中不存在则执行添加操作如果在对象中存在同名属性则执行修改操作。具体语法格式如下 Object.defineProperty(object, propertyname, descriptor)参数说明 object指定要添加或修改属性的对象可以是JavaScript对象或者DOM对象。propertyname表示属性名的字符串。descriptor定义属性描述符包括数据特性、访问器特性。 Object.defineProperty返回值为已修改的对象。 【示例3】先定义一个对象直接量obj然后使用Object.defineProperty()函数为obj对象定义属性属性名为x、值为1、可写、可枚举、可修改的特性 var obj {};Object.defineProperty(obj, x, {value: 1, //属性值writable: true, //属性可读可写enumerable: true, //属性可枚举configurable: true //属性可修改});console.log(obj.x ); //14.使用defineProperties 使用Object.defineProperties()函数可以一次定义多个属性具体语法格式如下 object.defineProperties(object, descriptors)参数说明 object对其添加或修改属性的对象可以是本地对象或DOM对象。descriptors包含一个或多个属性描述符。每个属性描述符描述一个数据属性或访问器属性。 【示例4】使用Object.defineProperties()函数将数据属性和访问器属性添加到对象obj上 var obj {};Object.defineProperties(obj, {x: { //定义属性xvalue: 1,writable: true, //可写},y: { //定义属性yset: function (x) { //设置访问器属性this.x x; //改写obj对象的x属性的值},get: function () { //设置访问器属性return this.x; //获取obj对象的x属性的值},}});obj.y 10;console.log ( obj.x ); //102.2、访问属性 1.使用点语法 使用点语法可以快速地读写对象属性点语法左侧是引用对象的变量右侧是属性名。 【示例1】定义对象obj包含属性x然后使用点语法读取属性x的值 var obj { //定义对象x:1,}console.log(obj.x); //访问对象属性x返回1obj.x 2; //重写属性值console.log(obj.x); //访问对象属性x返回22.使用中括号语法 可以使用中括号读写对象属性。 【示例2】针对上面示例使用中括号语法读写对象obj的属性x的值 console.log(obj[x]); //2obj[x] 3; //重写属性值console.log(obj[x]); //3注意在中括号语法中必须以字符串形式指定属性名而不能够使用标识符。中括号内可以使用字符串也可以是字符型表达式即只要表达式的值为字符串即可。 【示例3】使用for/in遍历对象的可枚举属性并读取它们的值然后重写属性值 for(var i in obj){ //遍历对象console.log(obj[i]); //读取对象的属性值obj[i] obj[i] obj[i]; //重写属性值console.log(obj[i]); //读取修改后属性值}在上面代码中中括号中的表达式i是一个变量其返回值为for…in遍历对象时枚举的每个属性名。 3.使用getOwnPropertyNames 使用Object.getOwnPropertyNames()函数能够返回指定对象私有属性的名称。私有属性是指用户在本地定义的属性而不是继承的原型属性。具体语法格式如下 Object.getOwnPropertyNames(object)参数object表示一个对象返回值为一个数组包含所有私有属性的名称其中包括可枚举的和不可枚举的属性和方法的名称。如果仅返回可枚举的属性和方法的名称应该使用Object.keys()函数。 【示例4】定义一个对象该对象包含3个属性然后使用getOwnPropertyNames获取该对象的私有属性名称 var obj { x:1, y:2, z:3 }var arr Object.getOwnPropertyNames( obj );console.log (arr); //返回属性名x,y,z4.使用keys 使用Object.keys()函数仅能获取可枚举的私有属性名称具体语法格式如下 Object.keys(object)参数object表示指定对象可以是JavaScript对象或DOM对象。返回值是一个数组其中包含对象的可枚举属性名称。 5.使用getOwnPropertyDescriptor 使用Object.getOwnPropertyDescriptor()函数能够获取对象的属性描述符具体语法格式如下 Object.getOwnPropertyDescriptor(object, propertyname)参数object表示指定对象propertyname表示属性的名称。返回值为属性的描述符对象。 【示例5】定义一个对象obj包含3个属性然后使用Object.getOwnPropertyDescriptor()函数获取属性x的数据属性描述符并使用该描述符将属性x设置为只读。最后再调用Object.defineProperty()函数使用数据属性描述符修改属性x的特性。遍历修改后的对象可以发现只读特性writable为false var obj { x:1, y:2, z:3 } //定义对象var des Object.getOwnPropertyDescriptor(obj, x); //获取属性x的数据属性描述符for (var prop in des) { //遍历属性描述符对象console.log(prop : des[prop]); //显示特性值}des.writable false; //重写特性不允许修改属性des.value 100; //重写属性值Object.defineProperty(obj, x, des); //使用修改后的数据属性描述符覆盖属性xvar des Object.getOwnPropertyDescriptor(obj, x); //重新获取属性x的数据属性描述符for (var prop in des) { //遍历属性描述符对象console.log(prop : des[prop]); //显示特性值}注意一旦为未命名的属性赋值后对象会自动定义该名称的属性在任何时候和位置为该属性赋值都不需要定义属性而只会重新设置它的值。如果读取未定义的属性则返回值都是undefined。 2.3、删除属性 使用delete可以删除对象的属性。 【示例】使用delete删除指定属性 var obj { x: 1} //定义对象delete obj.x; //删除对象的属性xconsole.log(obj.x); //返回undefined提示当删除对象属性之后不是将该属性值设置为undefined而是从对象中彻底清除属性。如果使用for…in语句枚举对象属性只能枚举属性值为undefined的属性但不会枚举已删除属性。 3、属性描述符 属性描述符是ECMAScript 5新增的一个内部对象用来描述对象属性的特性。 3.1、属性描述符的特性 属性描述符包含6个特性简单说明如下 value属性值默认值为undefined。writable设置属性值是否可写默认值为true。enumerable设置属性是否可枚举即是否允许使用for/in语句或Object.keys()函数遍历访问默认为true。configurable设置是否可设置属性特性默认为true。如果为false将无法删除该属性不能修改属性值也不能修改属性描述符。get取值器默认为undefined。set存值器默认为undefined。 【示例1】使用value读写属性的值 var obj {}; //定义空对象Object.defineProperty(obj, x, { value: 100 }); //添加属性x值为100console.log( Object.getOwnPropertyDescriptor(obj, x).value ); //返回100【示例2】使用writable特性禁止修改属性x var obj {}; //定义对象直接量Object.defineProperty(obj, x, { //添加属性value: 1, //设置属性默认值为1writable: false //禁止修改属性值});obj.x 2; //修改属性x的值console.log( obj.x ) //返回值为1说明修改失败在正常模式下如果writable为false重写属性不会报错但是操作会失败而在严格模式下会抛出异常。 3.2、访问器 可以使用点语法、中括号语法访问属性的值也可以使用访问器访问属性的值。 访问器包括set和get两个方法其中set可以设置属性值get可以读取属性值。使用访问器的好处为属性访问绑定高级功能如设计访问条件、数据再处理、与内部数据进行互动等。 【示例1】设计对象obj的x属性值必须是数字这里使用访问器对用户的访问操作进行监控。当使用obj.x取值时就会调用get方法赋值时就会调用set方法 注意取值方法get()不能接收参数存值方法set()只能接收一个参数用于设置属性的值。 【示例2】JavaScript支持一种简写方法。针对示例1通过如下方式可以快速定义属性 var obj { //定义对象直接量_x : 1, //定义_x私有属性get x() { return this._x }, //定义x属性的get方法set x( value ) { //定义x属性的set方法if(typeof value ! number ) throw new Error(请输入数字);//如果输入的值不是数字则抛出异常this._x value; //把用户输入的值保存到内部私有属性中}};console.log(obj.x); //访问属性值返回值为 1obj.x 2; //为属性x赋值值为数字2console.log(obj.x); //返回数字23.3、操作属性描述符 属性描述符是一个内部对象不允许直接读写可以通过下面几个函数进行操作 Object.getOwnPropertyDescriptor()可以读出指定对象的私有属性的属性描述符。Object.defineProperty()通过定义属性描述符来定义或修改一个属性然后返回修改后的对象。Object.defineProperties()与defineProperty()功能类似但可以同时定义多个属性描述符。Object.getOwnPropertyNames()获取对象的所有私有属性。Object.keys()获取对象的所有本地的、可枚举的属性。propertyIsEnumerable()对象的实例方法用以判断指定的私有属性是否可以枚举。 3.4、保护对象 JavaScript提供了3种方法用来精确控制一个对象的读写状态以防止对象被篡改 Object.preventExtensions阻止为对象添加新的属性。Object.seal阻止为对象添加新的属性同时也无法删除旧属性。等价于把属性描述符的configurable属性设为false。注意该方法不影响修改某个属性的值。Object.freeze阻止为一个对象添加新属性、删除旧属性、修改属性值。 同时提供3个对应的辅助检查函数简单说明如下 Object.isExtensible检查一个对象是否允许添加新的属性。Object.isSealed检查一个对象是否使用Object.seal方法。Object.isFrozen检查一个对象是否使用Object.freeze方法。 【示例】分别使用Object.preventExtensions、Object.seal和Object.freeze函数控制对象的状态然后再使用Object.isExtensible、Object.isSealed和Object.isFrozen函数检测对象的状态 var obj1 {}; //定义对象直接量obj1console.log( Object.isExtensible(obj1) ); //检测对象obj1是否可扩展返回 trueObject.preventExtensions(obj1); //禁止对象扩展属性console.log( Object.isExtensible(obj1) ); //检测对象obj1是否可扩展返回 falsevar obj2 {}; //定义对象直接量obj2console.log( Object.isSealed(obj2) ); //检测对象obj2是否已禁止配置falseObject.seal(obj2); //禁止配置对象的属性console.log( Object.isSealed(obj2) ); //检测对象obj2是否已禁止配置truevar obj3 {}; //定义对象直接量obj3console.log( Object.isFrozen(obj3) ); //检测对象obj3是否已冻结falseObject.freeze(obj3); //冻结对象的属性console.log( Object.isFrozen(obj3) ); //检测对象obj3是否已冻结true4、Object原型方法 在JavaScript中Object是所有对象的基类Object内置的原生方法包括两类Object静态函数和Object原型方法。Object原型方法定义在Object.prototype对象上也称为实例方法所有的对象都自动拥有这些方法。 4.1、使用toString toString()方法能够返回一个对象的字符串表示它返回的字符串比较灵活可能是一个具体的值也可能是一个对象的类型标识符。 【示例】显示实例对象、类型对象的toString()方法返回值是不同的 function F(x,y){ //构造函数this.x x;this.y y;}var f new F(1,2); //实例化对象console.log(F.toString()); //返回函数的源代码console.log(f.toString()); //返回字符串“[object Object]”toString()方法返回信息简单为了能够返回更多的有用信息可以重写该方法。例如针对实例对象返回的字符串都是“[object Object]”可以重写该方法让对象实例返回构造函数的源代码 Object.prototype.toString function(){return this.constructor.toString();}提示当把数据转换为字符串时JavaScript一般都会调用toString()方法来实现。由于不同类型的对象在调用该方法时所转换的字符串表示不同且有一定规律所以开发人员常用它来判断对象的类型弥补typeof运算符和constructor属性在检测对象数据类型方面的不足。 4.2、使用valueOf valueOf()方法能够返回对象的值。它的主要用途JavaScript自动类型转换时会默认调用这个方法。Object默认valueOf()方法返回值与toString()方法返回值相同但是部分类型对象重写了valueOf()方法。 【示例】Date对象的valueOf()方法返回值是当前日期对象的毫秒数 var o new Date(); //对象实例console.log(o.toString()); //返回当前时间的UTC字符串console.log(o.valueOf()); //返回距离1970年1月1日午夜之间的毫秒数console.log(Object.prototype.valueOf.apply(o)); //默认返回当前时间的UTC字符串对于String、Nutuber和Boolean类型的对象来说由于都有明显的原始值因此它们的valueOf()方法会返回合适的原始值。 4.3、检测私有属性 根据继承关系不同对象属性可以分为两类私有属性或称本地属性和继承属性或称原型属性。使用hasOwnProperty()原型方法可以快速检测属性的类型如果是私有属性则返回true否则返回false。 【示例1】在自定义类型中this.name表示对象本地的私有属性而原型对象中的name属性就是继承的属性 function F(){ //自定义数据类型this.name 私有属性; //本地属性}F.prototype.name 继承属性; //原型属性【示例2】针对示例1实例化对象然后判定实例对象的属性name是什么类型 var f new F(); //实例化对象console.log(f.hasOwnProperty(name)); //返回true说明当前调用的name是私有属性console.log(f.name); //返回字符串“私有属性”注意对于原型对象自身来说这些原型属性是它们的私有属性返回值是true。 4.4、检测可枚举属性 使用propertyIsEnumerable()原型方法可以检测一个私有属性是否可以枚举如果允许枚举则返回true否则返回false。 【示例】实例化对象o使用for…in循环遍历它的所有属性但是JavaScript允许枚举的属性只有a、b和c而能够枚举的本地属性只有a和b function F(){ //构造函数this.a 1; //本地属性athis.b 2; //本地属性b}F.prototype.c 3; //原型属性cF.d 4; //类型对象的属性var o new F(); //实例化对象for(var I in o){ //遍历对象的属性console.log(I); //打印可枚举的属性}console.log(o.propertyIsEnumerable(a)); //返回值为true说明可以枚举console.log(o.propertyIsEnumerable(b)); //返回值为true说明可以枚举console.log(o.propertyIsEnumerable©); //返回值为false说明不可以枚举console.log(o.propertyIsEnumerable(d)); //返回值为false说明不可以枚举4.5、检测原型对象 使用isPrototypeOf()方法可以检测当前对象是否为指定对象的原型。 var b F.prototype.isPrototypeOf(o);console.log(b); //返回true5、Object静态函数 Object静态函数是定义在Object类型对象上的本地方法通过Object直接调用既不需要实例化也不需要继承。 5.1、对象包装函数 Object()是一个类型函数它可以将任意值转换为对象。如果参数为空或者为undefined和null将创建一个空对象。 【示例】如果参数为数组、对象、函数则返回原对象不进行转换。根据这个特性可以设计一个类型检测函数专门检测一个值是否为引用型对象 function isObject(value) {return value Object(value);}console.log( isObject([])); //trueconsole.log( isObject(true) ); //false5.2、对象构造函数 Object()不仅可以包装对象还可以当作构造函数使用。如果使用new调用Object()函数将创建一个实例对象。 【示例】创建一个新的实例对象 var obj new Object();5.3、静态函数 Object类型对象包含很多静态函数简单总结如下 1.遍历对象 Object.keys以数组形式返回参数对象包含的可枚举的私有属性名。Object.getOwnPropertyNames以数组形式返回参数对象包含的私有属性名。 2.对象属性 Object.getOwnPropertyDescriptor()获取指定属性的属性描述符对象。Object.defineProperty()定义属性并设置属性描述符。Object.defineProperties()定义多个属性并设置属性描述符。 3.对象状态控制 Object.preventExtensions()防止对象扩展。Object.isExtensible()判断对象是否可以扩展。Object.seal()禁止对象配置。Object.isSealed()判断一个对象是否可以配置Object.freeze()冻结一个对象。Object.isFrozen()判断一个对象是否被冻结。 4.对象原型 Object.create()返回一个新的对象并指定原型对象和属性。Object.getPrototypeOf()获取对象的Prototype对象。
相关文章
-
asp网站怎么搭建2022年房子将迎来贬值潮
asp网站怎么搭建2022年房子将迎来贬值潮
- 站长
- 2026年02月16日
-
asp网站优化访问速度点石关键词排名优化软件
asp网站优化访问速度点石关键词排名优化软件
- 站长
- 2026年02月16日
-
asp网站压缩建一个网站大约多少钱
asp网站压缩建一个网站大约多少钱
- 站长
- 2026年02月16日
-
asp伪静态网站如何做筛选wordpress手机投放广告
asp伪静态网站如何做筛选wordpress手机投放广告
- 站长
- 2026年02月16日
-
asp响应式h5网站源码做任务 网站
asp响应式h5网站源码做任务 网站
- 站长
- 2026年02月16日
-
asp艺术学校网站源码长沙包装设计公司排名
asp艺术学校网站源码长沙包装设计公司排名
- 站长
- 2026年02月16日
