再践javascript对象原型属性构造函数扩展j精.docx
- 文档编号:422612
- 上传时间:2022-10-10
- 格式:DOCX
- 页数:11
- 大小:20.39KB
再践javascript对象原型属性构造函数扩展j精.docx
《再践javascript对象原型属性构造函数扩展j精.docx》由会员分享,可在线阅读,更多相关《再践javascript对象原型属性构造函数扩展j精.docx(11页珍藏版)》请在冰豆网上搜索。
再践javascript对象原型属性构造函数扩展j精
再践javascript对象、原型、属性、构造函数、扩展、json
javascript中的对象有三种1
1、内部对象1
2、基于类的对象1
3、基于原型的对象1
javascript内置对象上添加其它属性或者方法1
C#定义:
构造函数2
javascript定义:
构造函数2
函数定义2
Function(构造函数3
函数直接量3
Function(构造函数和函数直接量差别4
function定义构造函数4
javascript对象{}5
javascrip原型(prototype与属性(property5
this.特权(属性和方法)、prototype.公有(属性和方法)、function.(属性和方法)6
js面向对象设计用{}好还是function({}好(构造函数7
javascript解析JSON7
JSON建构于两种结构:
7
JSON具有以下这些形式:
7
JSON文件格式和JSON文件注释7
javascript和json.js一起使用的细节7
对象{}与json转换示例代码json.js:
8
示例使用JSON.parse将字符串转为json对象8
示例使用JSON.stringify将json对象转为字符串8
javascript中的对象有三种
1、内部对象
如Array、Boolean、Data、Math、Number、Object、RegExp、String对象等
这些对象系统给我们提供了各自的属性与方法供调用。
2、基于类的对象
用类的方式实现对象的引用,这些类需要我们自己定义
3、基于原型的对象
提供有关如何使用javascript基于原型的对象模型的指南,并且提供指向特定信息的链接,这些信息描述基于原型的对象的自定义构造函数和继承。
/*
javascript内置对象上添加其它属性或者方法
*/
String.prototype.good=function({//自定义方法
return"追加good方法";
}
String.prototype.bad="追加bad属性";//自定义属性
varstr="";//定义一个字符串实例str,调用String对象追加的属性和方法
document.write(str.good(;
document.write(str.bad;
自定义对象
语法规则
1、对象创建方式
1)、对象初始化器方式
格式:
objectName={property1:
value1,property2:
value2,…,propertyN:
valueN}
property是对象的属性
value则是对象的值,值可以是字符串、数字或对象三者之一
示例代码:
varuser={name:
"Sn",age:
25};
2)、构造函数方式
编写一个构造函数,并通过new方式来创建对象,构造函数本可以带有构造参数
示例代码:
functionf(name,age{
this.name=name;
this.age=age;
}
varuse=newf(;
C#定义:
构造函数
1、构造函数的命名必须和类名完全相同;
2、构造函数的功能主要用于在类的对象创建时定义初始化的状态,它没有返回值,也不能用void来修饰;
3、构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用,一般方法在程序执行到它的时候被调用;
4、当定义一个类的时候,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略;
5、当一个类只定义了私有(private)的构造函数,将无法通过new关键字来创建其对象(不可访问,因为它受保护级别限制);
当一个类没有定义任何构造函数,C#编译器会为其自动生成一个默认的无参的构造函数;除非类是static类;
javascript定义:
构造函数
javascript中的构造函数是允许有返回值的,但通常不设置返回值
如果一个构造函数有一个返回值,则返回的对象成为new表达式的值。
在此情况下,作为this的对象将会被抛弃。
构造函数作用:
使自己的对象多次复制,同时实例根据设置的访问等级可以访问其内部的属性和方法
当对象被实例化后,构造函数会立即执行它所包含的任何代码
/*
函数定义
函数是由这样的方式进行声明的:
关键字function、函数名、一组参数,以及置于括号中的待执行代码。
函数的构造语法有这三种:
1.functionfunctionName(arg0,arg1,...argN{statements}//function语句
2.varfunction_name=newFunction(arg1,arg2,...,argN,function_body;//Function(构造函数
3.varfunc=function(arg0,arg1,...argN{statements};//函数直接量
示例代码:
*/
functionfn(x{returnx*x};//1.function语句
varFnc=newFunction("x","returnx*x;";//2.Function(构造函数
varfact=function(x{returnx*x;};//3.函数直接量、匿名函数、表达式
document.write(fn(10;//显示100
document.write(Fnc(10;//显示100
document.write(fact(10;//显示100
/*
注:
如果函数无明确的返回值,或调用了没有参数的return语句,那么它真正返回的值是undefined。
*/
/*
Function(构造函数
函数实际上是功能完整的对象。
Function类可以表示开发者定义的任何函数。
用Function类直接创建函数的语法如下:
varfunction_name=newfunction(arg1,arg2,...,argN,function_body
在上面的形式中,每个arg都是一个参数,最后一个参数是函数主体(要执行的代码)。
这些参数必须是字符串。
示例代码:
*/
varf=newFunction("x","x*x;";
document.write(f(10;//显示:
100
document.write(f;//显示:
functionanonymous(x{returnx*x;}匿名(anonymous
document.write(f(10;//undefined
document.write(f;//显示:
functionanonymous(x{x*x;}
/*
注意:
尽管可以使用Function构造函数创建函数,但最好不要使用它,因为用它定义函数比用传统方式要慢得多。
不过,所有函数都应看作Function类的实例。
如果你定义的函数没有参数,那么可以只需给构造函数传递一个字符串(即函数的主体)即可。
注意:
传递给构造函数Function(的参数中没有一个用于说明它要创建的函数名。
用Function(构造函数创建的未命名函数有时被称为“匿名函数”。
Function(函数允许我们动态地建立和编译一个函数,它不会将我们限制在function语句预编译的函数体中。
*/
/*
函数直接量
函数直接量是一个表达式,它可以定义匿名函数。
函数直接量的语法和function语句非常相似,只不过它被用作表达式,而不是用作语句,而且也无需指定函数名。
语法:
varfunc=function(arg0,arg1,...argN{statements};//函数直接量
虽然函数直接量创建的是未命名函数,但是它的语法也规定它可以指定函数名,这在编写调用自身的递归函数时非常有用。
示例代码:
*/
varf=functionfact(x{
if(x<=1
return1;
else
returnx*fact(x-1;
};
document.write(f(10;//显示:
随机数,因为返回值小于0
/*
注:
它并没有真正创建一个名为fact(函数,只是允许函数体用这个名字来引用自身。
函数名并没有什么实质意义,它不过是用来保存函数的变量名字,这个变量只是保存的位置可能不一样而已,可以将这个函数赋给其他变量,它仍然会以相同方式起作用。
*/
/*
Function(构造函数和函数直接量差别
Function(构造函数和函数直接量之间的差别有一点就是:
使用构造函数Function(创建的函数不使用词法作用域,相反的,它们总是被顶级函数来编译,如:
示例代码:
*/
vary="global";
functionconstructFunction({
vary="local";
returnnewFunction("returny;";//Function(构造函数,不使用局部作用域
}
functionconstFunction({
vary="local";
varf=function({//函数直接量,使用局部作用域
returny;
};
returnf;
}
document.write(constructFunction((;//显示global,因为Function(构造函数返回的函数并不使用局部作用域
document.write(constFunction((;//显示lobal,因为函数直接量返回的函数并使用局部作用域
/*
注:
它并没有真正创建一个名为fact(函数,只是允许函数体用这个名字来引用自身。
函数名并没有什么实质意义,它不过是用来保存函数的变量名字,这个变量只是保存的位置可能不一样而已,可以将这个函数赋给其他变量,它仍然会以相同方式起作用。
*/
/*
javascript中的构造函数是允许有返回值的,但通常不设置返回值
如果一个构造函数有一个返回值,则返回的对象成为new表达式的值。
在此情况下,作为this的对象将会被抛弃。
*/
function定义构造函数
functionf(x{
this.x=x;
}
document.write(f(10;//显示:
10
varo=newf(10;
document.write(o.x;//显示:
10
/*
javascript对象{}
//定义对象语法
varobject={};
//对象内的属性语法(属性名(property与属性值(value是成对出现的
object.property=value;
//对象内的函数语法(函数名(func与函数内容是成对出现的
object.func=function({...;};
示例代码:
*/
varobject={};
object.property='value';
object.func=function({return'fn'};
document.write(object.property;//显示:
value
document.write(object.constructor;//显示:
functionObject({[nat
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 再践 javascript 对象 原型 属性 构造 函数 扩展