文档库 最新最全的文档下载
当前位置:文档库 › JAVASCRIPT面向对象基础总结

JAVASCRIPT面向对象基础总结

JAVASCRIPT面向对象基础总结
JAVASCRIPT面向对象基础总结

javascript面向对象基础

1.使用[]调用对象的属性和方法

functionUser()

{

this.age=21;

this.sex="男?";

}

varuser=newUser();

alert(user["age"]);

2.动态添加,修改,删除对象的属性和方法//定义类varuser=newObject(); //添加属性和方法

https://www.wendangku.net/doc/6314424325.html,="cary";

user.age=21;

user.show=function(){

alert(https://www.wendangku.net/doc/6314424325.html,+"年?龄?为?:?"+this.age);}

//执行方法

user.show();

//修改属性和方法

https://www.wendangku.net/doc/6314424325.html,="James";

user.show=function()

{

alert(https://www.wendangku.net/doc/6314424325.html,+"你?好?");

}

//执行方法

user.show();

//删除属性和方法

https://www.wendangku.net/doc/6314424325.html,="undefined";

user.show="undefined"

//执行方法

user.show();

3.使用大括号{}语法创建无类型对象varobj={};

varuser=

{

name:"cary",

age:21,

show:function(){

alert(https://www.wendangku.net/doc/6314424325.html,+"年?龄?为?:?"+this.age);

}

}

user.show();

varobj={};等价于

varobj=newObject();

4.Prototype原型对象

每个函数function也是一个对象,对应的类类型为“Function”,每个函数对象都有一个子对象prototype,表示函数的原型,所以当我们new一个类的对象的时候prototype对象的成员都会被实例化为对象的成员。例如:

functionclass1()

{}

class1.prototype.show=function(){

alert("prototyemember");

}

varobj=newclass1();

obj.show();

5.Function函数对象详解

5.1Function和Date,Array,String等一样都属于JavaScript的内部对象,这些对象的构造器是由JavaScript本身所定义的。上面说过函数对象对应的类型是Function,这个和数组的对象是Array一个道理。所以也可以像newArray()一样newFunction()来创建一个函数对象,而函数对象除了使用这种方式还可以使用function关键字来创建。我们之所以不经常使用newFunction()的方式来创建函数是因为一个函数一般会有很多语句,如果我们将这些都传到newFunction()的参数中会显得可读性比较差。varfunctionName=newFunction(p1,p2,...,pn,body)其中p1到pn为参数,body为函数体。

5.2有名函数和无名函数

有名函数:functionfuncName(){}无名函数:varfuncName=function(){}他们之间的唯一区别:就是对于有名函数他可以出现在调用之后再定义,而对于无名函数,他必须是在调用之前就已经定义好。

5.3我们可以利用Function的prototype对象来扩展函数对象,如:

Function.prototype.show=function(){

alert("扩展方法");

}

functionfun()

{}

fun.show();

fun.show().show();

fun.show().show();这句的意思是调用fun.show()这个函数对象的show方法。是一个递归的调用,因为fun.show()也是一个函数。

5.4

6.传递给参数的隐含参数arguments

我们在使用函数时除了传递制定的参数,还创建了一个隐含的参数arguments,如下:functionfun(a,b){

for(vari=0;i

alert(arguments[i]);

}

}

fun(1,2,3);

arguments还有一个属性是callee,表示对函数对象本身的引用。

7.函数的apply,call方法

他们的作用都是将函数绑定到另外一个对象上去运行,两者只是在定义参数上有区别,如下:

Function.prototype.apply(thisArg,argArray);

Function.prototype.call(thisArg[,arg1[,arg2...]]);

下面是例子,obj1的show1方法绑定到obj2后整个函数的执行环境就转移到了obj2,所以this指针也就指向了obj2,所以会显示fun2t:

functionfun1(){

https://www.wendangku.net/doc/6314424325.html,="fun1";

this.show1=function(arg){

alert(https://www.wendangku.net/doc/6314424325.html,+arg);

}

}

functionfun2(){

https://www.wendangku.net/doc/6314424325.html,="fun2";

this.show2=function(arg){

alert(https://www.wendangku.net/doc/6314424325.html,+arg);

}

}

varobj1=newfun1();

varobj2=newfun2();

obj1.show1.apply(obj2,["t"]);

obj1.show1.call(obj2,"t");

8.JavaScript中的类实现

8.1命名空间:我们可以使用如下方式实现命名空间,namespace1可以看做为命名

空间。

varnamespace1=newObject();

namespace1.class1=function(){

//对?象初始化代码

}

varobj1=newnamespace1.class1();

8.2类成员

上面的我们已经为类添加了成员和方法,除了上面的方法我们还可以使用prototype的方式来给类添加成员,我们怎么做才是最合理的呢,首先来看下前面的方式:functionUser(){

//构造函数

}

//成员定义

https://www.wendangku.net/doc/6314424325.html,="cary";

User.prototype.show=function(){

alert(https://www.wendangku.net/doc/6314424325.html,);

}

上面的方式我们每定义一个类成员都要去写User.prototype,我们可以重构为下面的形式:

functionUser(){

//构造函数

}

//成员定义

User.prototype=

{

name:"cary",

show=function()

{

alert(https://www.wendangku.net/doc/6314424325.html,);

}

}

8.3私有成员

实现类的私有成员主要是利用变量的作用域,我们在构造函数中实现。functionUser(){

//构造函数中定义私有成员

varname="cary";

functionshow()

{

alert(name);

}

//共有成员

this.setname=function()

{

name="james";

}

}

8.4静态成员

我们可以通过给一个函数对象直接添加成员来实现静态成员,如:functionclass1()

{}

//静态属性和方法

class1.staticpr="staticpr";

class1.staticmet=function()

{}

//调用

class1.staticmet();

我们可以通过给函数对象所在的类Function添加成员来实现给所有的函数对象默认添加静态成员,如下:

Function.prototype.staticmet=function()

{}

functionclass1()

{}

//调用

class1.staticmet();

9.实现反射机制

使用for(...in...)方式,for中的varp来存储User对象的属性和方法,我们来判断是属性还是方法,如下:

functionUser(){

//构造函数

}

//成员定义

User.prototype=

{

name:"cary",

show:function()

{

alert(https://www.wendangku.net/doc/6314424325.html,+"Hello");}

}

varu=newUser();

for(varpinu){

if(typeof(u[p])=="function"){

u[p]();

}

else{

alert(u[p]);

}

}

JavaScript常用知识点

1、GET和POST的区别,何时使用POST? GET:一般用于信息获取,使用URL传递参数,对所发送信息的数量也有限制,一般在2000个字符 POST:一般用于修改服务器上的资源,对所发送的信息没有限制。 GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值, 也就是说Get是通过地址栏来传值,而Post是通过提交表单来传值。 然而,在以下情况中,请使用POST 请求: 无法使用缓存文件(更新服务器上的文件或数据库) 向服务器发送大量数据(POST 没有数据量限制) 发送包含未知字符的用户输入时,POST 比GET 更稳定也更可靠JavaScript是客户端和服务器端脚本语言,可以插入到HTML页面中,并且是目前较热门的Web开发语言。同时,JavaScript也是面向对象编程语言。 类似的基本题目还包括:JavaScript都有哪些类型?JavaScript是谁发明的?……2、列举Java和JavaScript之间的区别? Java是一门十分完整、成熟的编程语言。相比之下,JavaScript是一个可以被引入HTML页面的编程语言。这两种语言并不完全相互依赖,而是针对不同的意图而设计的。Java是一种面向对象编程(OOPS)或结构化编程语言,类似的如C ++或C,而JavaScript是客户端脚本语言,它被称为非结构化编程。

3. JavaScript和ASP脚本相比,哪个更快? JavaScript更快。JavaScript是一种客户端语言,因此它不需要Web服务器的协助来执行。另一方面,ASP是服务器端语言,因此总是比JavaScript慢。值得注意的是,Javascript现在也可用于服务器端语言(nodejs)。 4、什么是负无穷大? 负无穷大是JavaScript中的一个数字,可以通过将负数除以零来得到。 5、如何将JavaScript代码分解成几行吗? 在字符串语句中可以通过在第一行末尾使用反斜杠“\”来完成 例:document.write(“This is \a program”); 如果不是在字符串语句中更改为新行,那么javaScript会忽略行中的断点。

javascript创建类方法

Javascript 语言本身也可以进行面向对象的编程,如下是最近几天对javascript面向对象编程的总结。 对象的创建 javascript对象有两种创建方式 1.使用对象初始器: objName = { prop1:value_1, prop2:value_2, ... } 该方法直接创建实例对象,而无需声明。 2.使用构造函数: 如:fuction Engineer(para1,para2){ this.para1 = para1; this.para2 = para2; ... } my Bill = new Engineer("Bill","24"); 该方法需要用new()来创建实例。 为一个object类型添加新的属性: 如:Bill.prototype.sex = "man"; 这样,所有Engineer类型的对象都有属性sex,其value为"man", 而如下语句: Bill.sex = "man"; 则只是为Bill对象本身添加一个属性。 为对象定义一个方法: function draw(){ ... } fuction Engineer(para1,para2){ this.para1 = para1; this.para2 = para2; this.draw = draw; ... } my Bill = new Engineer("Bill","24"); Bill.draw();

也可以使用如下的定义方式: objName = { prop1:value_1, prop2:value_2, draw:function(num){ ... } ... } 引用时用objName.draw(); 删除对象的一个属性: //Creates a new property, myobj, with two properties, a and b. myobj = new Object; myobj.a=5; myobj.b=12; //Removes the a property, leaving myobj with only the b property. delete myobj.a;//删除myobj实例对象的a属性 删除对象的一个方法: delete objName.draw;//删除objNmae实例对象的draw函数 ===================================================================== ======= 在JavaScript中可以使用function关键字来定义一个“类”,如何为类添加成员。在函数内通过this指针引用的变量或者方法都会成为类的成员,例如: function class1(){ var s="abc"; this.p1=s; this.method1=function(){ alert("this is a test method"); } } var obj1=new class1(); 通过new class1()获得对象obj1,对象obj1便自动获得了属性p1和方法

个人心得avascript总结

个人心得avascript总结 1、javascript是一种基于对象,和事件驱动的并具有安全性的脚本语言;基于对象,动态语言,无需编译,直接解释执行; 2、可以放在的地方;A、中,一对之间;B、单独文件中C、将脚本程序代码作为属性值、javascript 3、保留字以及关键字; 4、javascript基本语法:4.1标识:大小写字母,数字,下划线,和美元符号:不能以数字开头;4.2javascript严格区分大小写4.3 每条语句必须以分号结束;(不写,一般没事,但是可能会引起不必要的歧义)4.4多行注释/**/单行注释: //4.5Functiontest(){Vari=100;//不加var就会自动变成全局变量,这样在以后会产生冲突;Alert(i);}Test();5、数据类型:(数字,boolean,String字符串;日期什么的是对象了)特殊值:NaN,Infinity,函数isNaN();isFinite();Boolean,取值只能是true,和false全是小写逻辑运算符vara=100;varb=0;varc=a||b;alert(c);//返回值是100:就是当两边返回值都是false时,返回第一个或最后一个不为false的值;6、什么值在javascript中是false?逻辑运算中,0,“”,false,null,undefined,NaN均表示false6.1想要赋个默认值:怎么办? functiontest(e){e=e||newobject();if(https://www.wendangku.net/doc/6314424325.html,!=ang){alert(e);}}test(3);看这里:Varsth=test;//相当于将函数赋给一个变量,这个变量之后可以传参运行了;Alert(sth(100));7、javascript中的系统函数:

深入认识JavaScript中的this指针,学习群76650734

学习群76650734 深入认识JavaScript中的this指针 this指针是面向对象程序设计中的一项重要概念,它表示当前运行的对象。在实现对象的方法时,可以使用this指针来获得该对象自身的引用。 和其他面向对象的语言不同,JavaScript中的this指针是一个动态的变量,一个方法内的this指针并不是始终指向定义该方法的对象的,在上一节讲函数的apply和call方法时已经有过这样的例子。为了方便理解,再来看下面的例子: 以下是引用片段: <script language="JavaScript" type="text/javascript"> <!-- //创建两个空对象 var obj1=new Object(); var obj2=new Object(); //给两个对象都添加属性p,并分别等于1和2 obj1.p=1; obj2.p=2; //给obj1添加方法,用于显示p的值 obj1.getP=function(){ alert(this.p); //表面上this指针指向的是obj1 } //调用obj1的getP方法 obj1.getP(); //使obj2的getP方法等于obj1的getP方法 obj2.getP=obj1.getP; //调用obj2的getP方法 obj2.getP(); //--> </script> 从代码的执行结果看,分别弹出对话框显示1和2。由此可见,getP函数仅定义了一次,在不同的场合运行,显示了不同的运行结果,这是有this指针的变化所决定的。在obj1的getP方法中,this就指向了obj1对象,而在obj2的getP方法中,this就指向了obj2对象,并通过this指针引用到了两个对象都具有的属性p。 由此可见,JavaScript中的this指针是一个动态变化的变量,它表明了当前运行该函数的对象。由this指针的性质,也可以更好的理解JavaScript中对象的本质:一个对象就是由一个或多个属性(方法)组成的集合。每个集合元素不是仅能属于一个集合,而是可以动态的属于多个集合。这样,一个方法(集合元素)由谁调用,this指针就指向谁。实际上,前

javaScript重点知识总结

1、JavaScript 显示数据 JavaScript 可以通过不同的方式来输出数据: 使用window.alert()弹出警告框。 使用document.write()方法将内容写到HTML 文档中。 使用innerHTML写入到HTML 元素。 使用console.log()写入到浏览器的控制台。 实例: document.getElementById("demo").innerHTML = "段落已修改。"; document.write("

这是一个标题

");//write可以直接写入格式! 2、JavaScript 数据类型 var length = 16; // Number 通过数字字面量赋值var points = x * 10; // Number 通过表达式字面量赋值var lastName = "Johnson"; // String 通过字符串字面量赋值var cars = ["Saab", "Volvo", "BMW"]; // Array 通过数组字面量赋值var person = {firstName:"John", lastName:"Doe"}; // Object 通过对象字面量赋值 var cars=new Array(); cars[0]="Saab"; cars[1]="Volvo"; cars[2]="BMW"; 3、JavaScript事件

HTML 事件可以是浏览器行为,也可以是用户行为。 以下是HTML 事件的实例: HTML 页面完成加载。 HTML input 字段改变时。 HTML 按钮被点击。 右图是常见的事件(前面都有on) 事件有三种写法,举onclick为例: //后面再写函数实现方式。 4、JavaScript 字符串 var carname = "Volvo XC60"; var character = carname[7]; //字符串的索引从0 开始 JavaScript本身对单引号还是双引号没有区别。一般都用双引号,两个都存在时,再考虑。

javaScript练习题

JS练习题 JS练习题 (1) 一、选择题 (2) 二、不定项选择题 (7) 三、填空 (8) 四、判断 (9) 五、阅读程序写结果 (10) 六、程序题 (12) 七、设计题 (15)

一、选择题 1、写“Hello World”的正确javascript语法是?() A. document.write("Hello World") B. "Hello World" C. response.write("Hello World") D. ("Hello World") 2、JS特性不包括() A.解释性 B.用于客户端 C.基于对象 D.面向对象 3、下列JS的判断语句中( )是正确的 A.if(i==0) B.if(i=0) C.if i==0 then D.if i=0 then 4、下列JavaScript的循环语句中( )是正确的 A.if(i<10;i++) B.for(i=0;i<10) C.for i=1 to 10 D.for(i=0;i<=10;i++) 5、下列的哪一个表达式将返回假() A.!(3<=1) B.(4>=4)&&(5<=2) C.(“a”==”a”)&&(“c”!=”d”) D.(2<3)||(3<2) 6、下列选项中,( )不是网页中的事件 A.onclick B.onmouseover C.onsubmit D.onpressbutton 7、有语句“var x=0;while(____) x+=2;”,要使while循环体执行10次,空白处的循环判定式应写为:() A.x<10 B. x<=10 C.x<20 D.x<=20 8、JS语句 var a1=10; var a2=20; alert(“a1+a2=”+a1+a2) 将显示( )结果 A.a1+a2=30 B.a1+a2=1020 C.a1+a2=a1+a2 9、将字串s中的所有字母变为小写字母的方法是() A.s.toSmallCase() B.s.toLowerCase() C.s.toUpperCase() D.s.toUpperChars() 10、以下( )表达式产生一个0~7之间(含0,7)的随机整数. A.Math.floor(Math.random()*6) B.Math.floor(Math.random()*7) C.Math. floor(Math.random()*8) D.Math.ceil(Math.random()*8) 11、产生当前日期的方法是() A.Now(); B.Date() C.new Date() D.new Now() 12、如果想在网页显示后,动态地改变网页的标题() A.是不可能的 B.通过document.write(“新的标题容”) C. 通过document.title=(“新的标题容”) D. 通过document.changeTitle(“新的标题容”) 13、某网页中有一个窗体对象,其名称是mainForm,该窗体对象的第一个元素是按钮,其名称是myButton,表述该按钮对象的方法是()

JavaScript复习题

复习题1 一、选择题 1、写“Hello World”的正确javascript语法是 A. ("Hello World") B. "Hello World" C. ("Hello World") D. ("Hello World") 2、JS特性不包括( ) A.解释性 B.用于客户端 C.基于对象 D.面向对象 3、下列JS的判断语句中( )是正确的 (i==0)(i=0) i==0 then i=0 then 4、下列JavaScript的循环语句中( )是正确的 (i<10;i++) (i=0;i<10) i=1 to 10 (i=0;i<=10;i++) 5、下列的哪一个表达式将返回假 A.!(3<=1) B.(4>=4)&&(5<=2) C.(“a”==”a”)&&(“c”!=”d”) D.(2<3)||(3<2) 6、下列选项中,( )不是网页中的事件 7、有语句“var x=0;while(____) x+=2;”,要使while循环体执行10次,空白处的循环判定式应写为: A.x<10 B. x<=10 <20 <=20 8、JS语句 var a1=10; var a2=20; alert(“a1+a2=”+a1+a2) 将显示( )结果 +a2=30 +a2=1020+a2=a1+a2 9、将字串s中的所有字母变为小写字母的方法是( ) 、以下( )表达式产生一个0~7之间(含0,7)的随机整数. . floor()*8) 11、产生当前日期的方法是( ) (); () Date() Now() 12、如果想在网页显示后,动态地改变网页的标题( ) A.是不可能的 B.通过(“新的标题内容”) C. 通过=(“新的标题内容”) D. 通过(“新的标题内容”) 13、某网页中有一个窗体对象,其名称是mainForm,该窗体对象的第一个元素是按钮,其名称是myButton,表述该按钮对象的方法是()

JavaScript面向对象简介

JavaScript面向对象简介 JavaScript 的核心是支持面向对象的,同时它也提供了强大灵活的OOP 语言能力。本文从对面向对象编程的介绍开始,带您探索JavaScript 的对象模型,最后描述 JavaScript 当中面向对象编程的一些概念。 复习JavaScript 如果您对JavaScript 的概念(如变量、类型、方法和作用域等)缺乏自信,您可以在重新介绍JavaScript这篇文章里学习这些概念。您也可以查阅这篇JavaScript 1.5 核心指南。 面向对象编程 面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式。它使用先前建立的范例,包括模块化,多态和封装几种技术。今天,许多流行的编程语言(如Java,JavaScript,C#,C+ +,Python,PHP,Ruby 和Objective-C)都支持面向对象编程(OOP)。 面向对象编程可以看作是使用一系列对象相互协作的软件设计,相对于传统观念,一个程序只是一些函数的集合,或简单的计算机指令列表。在OOP中,每个对象能够接收邮件,处理数据和发送消息给其他对象。每个对象都可以被看作是一个独立的小机器有不同的作用和责任。 面向对象程序设计的目的是促进更好的编程灵活性和可维护性,并在大型软件工程中广为流行。凭借其十分注重的模块化,面向对象的代码开发更简单,往后维护更容易理解,使其自身能更直接的分析,编码,理解复杂的情况和过程,比非模块化编程方法省事。1

术语 Namespace 命名空间 允许开发人员在一个专用的名称下捆绑所有功能代码的容器。 Class 类 定义对象的特征。 Object 对象 类的一个实例。 Property 属性 对象的特征,比如颜色。 Method 方法 对象的能力,比如行走。 Constructor 构造函数 实例化时调用的函数。 Inheritance 继承 一个类可以继承另一个类的特征。 Encapsulation 封装 类定义了对象的特征,方法只定义了方法如何执行。 Abstraction 抽象 结合复杂的继承,方法,属性,一个对象能够模拟现实的模型。 Polymorphism 多态 多意为‘许多’,态意为‘形态’。不同类可以定义相同的方法或属性。更多关于面向对象编程的描述,请参照维基百科的面向对象编程。 原型编程

个人心得javascript总结模板

个人心得javascript总结模板 个人心得javascript总结模板 篇一:个人心得javascript总结 1、javascript 是一种基于对象,和事件驱动的并具有安全性的脚本语言;基于对象,动态语言,无需编译,直接解释执行; 2、可以放在的地方; A、中,一对 之间; B、单独文件中 C、将脚本程序代码作为属性值、javascript 3、保留字以及关键字; 4、javascript基本语法: 4.1 标识:大小写字母,数字,下划线,和美元符号:不能以数字开头; 4.2 javascript严格区分大小写 4.3 每条语句必须以分号结束;(不写,一般没事,但是可能会引起不必要的歧义) 4.4 多行注释**单行注释: 4.5 Function test(){ Var i=100;不加var 就会自动变成全局变量,这样在以后会产生冲突;

Alert(i); } Test(); 5、数据类型:(数字,boolean,String字符串;日期什么的是对象了) 特殊值:NaN,Infinity,函数isNaN();isFinite(); Boolean,取值只能是true,和false 全是小写 逻辑运算符 var a=100; var b=0; var c=a||b; alert(c);返回值是100:就是当两边返回值都是false时,返回第一个或最后一个不为false的值; 6、什么值在javascript中是false? 逻辑运算中,0,“”,false,null,undefined,NaN均表示false 6.1想要赋个默认值:怎么办? function test(e){ e=e||new object(); if(https://www.wendangku.net/doc/6314424325.html,!='ang'){ alert(e);}} test(3); 看这里: Var sth=test;相当于将函数赋给一个变量,这个变量之后可以传参运行

Bootstrap知识简单归纳

Bootstrap 响应式实用工具---目前只适用于块和表切换 Bootstrap 字形图标(Glyphicons) 什么是字形图标(Glyphicons)? 字形图标(Glyphicons)是在Web 项目中使用的图标字体。 字形图标(Glyphicons)列表 点击这里,查看可用的字形图标(Glyphicons)列表 用法 如需使用图标,只需要简单地使用下面的代码即可。请在图标和文本之间保留适当的空间。 在线定制字形图标(Glyphicons) 点击这里,在线定制字形图标(Glyphicons)。 插入符 使用插入符表示下拉功能和方向。使用带有class caret 的 元素得到该功能。 关闭图标 使用通用的关闭图标来关闭模态框和警告框。使用class close 得到关闭图标。 快速浮动 您可以分别使用class pull-left 或pull-right 来把元素向左或向右浮动。下面的实例演示了这点。 如需对齐导航栏中的组件,请使用.navbar-left 或.navbar-right 代替。请查看Bootstrap 导航栏。 居中内容块 使用class center-block 来居中元素。

清除浮动 如需清除元素的浮动,请使用.clearfix class。 显示和隐藏内容 您可以通过使用class .show 和.hidden 来强行设置元素显示或隐藏(包括屏幕阅读器)。屏幕阅读器 您可以通过使用class .sr-only 来把元素对所有设备隐藏,除了屏幕阅读器。 Bootstrap 下拉菜单(Dropdowns) 对齐 通过向.dropdown-menu 添加class .pull-right 来向右对齐下拉菜单class="dropdown-menu pull-right" 标题 您可以使用class dropdown-header 向下拉菜单的标签区域添加标题 Bootstrap 按钮组 按钮组允许多个按钮被堆叠在同一行上。当你想要把按钮对齐在一起时,这就显得非常有用。您可以通过Bootstrap 按钮(Button)插件添加可选的JavaScript 单选框和复选框样式行为 Bootstrap 按钮下拉菜单 本章将讲解如何使用Bootstrap class 向按钮添加下拉菜单。如需向按钮添加下拉菜单,只需要简单地在在一个.btn-group 中放置按钮和下拉菜单即可。您也可以使用 来指示按钮作为下拉菜单。