- 浏览: 765031 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (573)
- Java基础 (76)
- C++基础 (5)
- hibernate (5)
- struts (4)
- spring (1)
- webservice (7)
- AjaX基础 (0)
- JS脚本 (53)
- 正则表达式 (5)
- html脚本 (30)
- 数据库基础 (54)
- 工作相关 (49)
- 其他 (30)
- Linux (9)
- web服务器 (17)
- JSP (13)
- eclipse (6)
- 面试题相关 (20)
- XML (3)
- Apache common (2)
- 生活 (35)
- VMware (1)
- log4j (9)
- BeanUtils (2)
- 设计模式 (3)
- UML (1)
- UNIX (1)
- ibats (5)
- GT-Grid (17)
- ABAP学习 (17)
- ABAP (35)
- ABAP--ALV (11)
- ABAP--WEBDIMPRO (0)
- abap-sample (1)
- BEMS (2)
- flex (33)
- GIS技术 (3)
最新评论
1.使用[]调用对象的属性和方法
function User()
{
this.age = 21;
this.sex = "男?";
}
var user = new User();
alert(user["age"]);2.动态添加,修改,删除对象的属性和方法//定义类
var user = new Object();
//添加属性和方法
user.name = "cary";
user.age = 21;
user.show = function() {
alert(this.name + "年?龄?为?:?" + this.age);
}
//执行方法
user.show();
//修改属性和方法
user.name = "James";
user.show = function()
{
alert(this.name + "你?好?" );
}
//执行方法
user.show();
//删除属性和方法
user.name = "undefined";
user.show = "undefined"
//执行方法
user.show();3.使用大括号{}语法创建无类型对象var obj = {};
var user =
{
name: "cary",
age: 21,
show: function() {
alert(this.name + "年?龄?为?:?" + this.age);
}
}
user.show();var obj = {}; 等价于
var obj = new Object();4.Prototype原型对象每个函数function也是一个对象,对应的类类型为“Function”,每个函数对象都有一个子对象prototype,表示函数的原型,所以当我们new
一个类的对象的时候prototype对象的成员都会被实例化为对象的成员。例如:
function class1()
{ }
class1.prototype.show = function() {
alert("prototye member");
}
var obj = new class1();
obj.show();5.Function函数对象详解5.1.Function和Date,Array,String等一样都属于JavaScript的内部对象,这些对象的构造器是由JavaScript本身所定义的。上面说过函数对象对应的类型是Function,这个和数组的对象是Array一个道理。所以也可以像new Array()一样new Function()来创建一个函数对象,而函数对象除了使用这种方式还可以使用function关键字来创建。我们之所以不经常使用new Function()的方式来创建函数是因为一个函数一般会有很多语句,如果我们将这些都传到new Function()的参数中会显得可读性比较差。var functionName=new Function(p1,p2,...,pn,body)其中p1到pn为参数,body为函数体。5.2.有名函数和无名函数有名函数:function funcName(){}无名函数:var funcName=function(){}他们之间的唯一区别:就是对于有名函数他可以出现在调用之后再定义,而对于无名函数,他必须是在调用之前就已经定义好。5.3.我们可以利用Function的prototype对象来扩展函数对象,如:Function.prototype.show = function() {
alert("扩展方法");
}
function fun()
{ }
fun.show();
fun.show().show();fun.show().show();这句的意思是调用fun.show()这个函数对象的show方法。是一个递归的调用,因为fun.show()也是一个函数。
6.传递给参数的隐含参数arguments
我们在使用函数时除了传递制定的参数,还创建了一个隐含的参数arguments,如下:
function fun(a, b) {
for (var i = 0; i < arguments.length; 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:
function fun1() {
this.name = "fun1";
this.show1 = function(arg) {
alert(this.name + arg);
}
}
function fun2() {
this.name = "fun2";
this.show2 = function(arg) {
alert(this.name + arg);
}
}
var obj1 = new fun1();
var obj2 = new fun2();
obj1.show1.apply(obj2, ["t"]);
obj1.show1.call(obj2, "t");8.JavaScript中的类实现
8.1.命名空间:我们可以使用如下方式实现命名空间,namespace1 可以看做为命名空间。
var namespace1 = new Object();
namespace1.class1 = function() {
//对?象初始化代码
}
var obj1 = new namespace1.class1();8.2.类成员
上面的我们已经为类添加了成员和方法,除了上面的方法我们还可以使用prototype的方式来给类添加成员,我们怎么做才是最合理的呢,首先来看下前面的方式:function User() {
//构造函数
}
//成员定义
User.prototype.name = "cary";
User.prototype.show = function() {
alert(this.name);
}上面的方式我们每定义一个类成员都要去写User.prototype,我们可以重构为下面的形式:function User() {
//构造函数
}
//成员定义
User.prototype =
{
name : "cary",
show = function()
{
alert(this.name);
}
}
8.3.私有成员
实现类的私有成员主要是利用变量的作用域,我们在构造函数中实现。
function User() {
//构造函数中定义私有成员
var name="cary";
function show()
{
alert(name);
}
//共有成员
this.setname=function()
{
name="james";
}
}8.4.静态成员我们可以通过给一个函数对象直接添加成员来实现静态成员,如:
function class1()
{ }
//静态属性和方法
class1.staticpr = "staticpr";
class1.staticmet = function()
{ }
//调用
class1.staticmet();我们可以通过给函数对象所在的类Function添加成员来实现给所有的函数对象默认添加静态成员,如下:Function.prototype.staticmet = function()
{ }
function class1()
{ }
//调用
class1.staticmet();9.实现反射机制使用for(...in...)方式,for中的var p来存储User对象的属性和方法,我们来判断是属性还是方法,如下:function User() {
//构造函数
}
//成员定义
User.prototype =
{
name : "cary",
show : function()
{
alert(this.name+"Hello");
}
}
var u=new User();
for (var p in u) {
if(typeof(u[p])=="function") {
u[p]();
}
else {
alert(u[p]);
}
}
function User()
{
this.age = 21;
this.sex = "男?";
}
var user = new User();
alert(user["age"]);2.动态添加,修改,删除对象的属性和方法//定义类
var user = new Object();
//添加属性和方法
user.name = "cary";
user.age = 21;
user.show = function() {
alert(this.name + "年?龄?为?:?" + this.age);
}
//执行方法
user.show();
//修改属性和方法
user.name = "James";
user.show = function()
{
alert(this.name + "你?好?" );
}
//执行方法
user.show();
//删除属性和方法
user.name = "undefined";
user.show = "undefined"
//执行方法
user.show();3.使用大括号{}语法创建无类型对象var obj = {};
var user =
{
name: "cary",
age: 21,
show: function() {
alert(this.name + "年?龄?为?:?" + this.age);
}
}
user.show();var obj = {}; 等价于
var obj = new Object();4.Prototype原型对象每个函数function也是一个对象,对应的类类型为“Function”,每个函数对象都有一个子对象prototype,表示函数的原型,所以当我们new
一个类的对象的时候prototype对象的成员都会被实例化为对象的成员。例如:
function class1()
{ }
class1.prototype.show = function() {
alert("prototye member");
}
var obj = new class1();
obj.show();5.Function函数对象详解5.1.Function和Date,Array,String等一样都属于JavaScript的内部对象,这些对象的构造器是由JavaScript本身所定义的。上面说过函数对象对应的类型是Function,这个和数组的对象是Array一个道理。所以也可以像new Array()一样new Function()来创建一个函数对象,而函数对象除了使用这种方式还可以使用function关键字来创建。我们之所以不经常使用new Function()的方式来创建函数是因为一个函数一般会有很多语句,如果我们将这些都传到new Function()的参数中会显得可读性比较差。var functionName=new Function(p1,p2,...,pn,body)其中p1到pn为参数,body为函数体。5.2.有名函数和无名函数有名函数:function funcName(){}无名函数:var funcName=function(){}他们之间的唯一区别:就是对于有名函数他可以出现在调用之后再定义,而对于无名函数,他必须是在调用之前就已经定义好。5.3.我们可以利用Function的prototype对象来扩展函数对象,如:Function.prototype.show = function() {
alert("扩展方法");
}
function fun()
{ }
fun.show();
fun.show().show();fun.show().show();这句的意思是调用fun.show()这个函数对象的show方法。是一个递归的调用,因为fun.show()也是一个函数。
6.传递给参数的隐含参数arguments
我们在使用函数时除了传递制定的参数,还创建了一个隐含的参数arguments,如下:
function fun(a, b) {
for (var i = 0; i < arguments.length; 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:
function fun1() {
this.name = "fun1";
this.show1 = function(arg) {
alert(this.name + arg);
}
}
function fun2() {
this.name = "fun2";
this.show2 = function(arg) {
alert(this.name + arg);
}
}
var obj1 = new fun1();
var obj2 = new fun2();
obj1.show1.apply(obj2, ["t"]);
obj1.show1.call(obj2, "t");8.JavaScript中的类实现
8.1.命名空间:我们可以使用如下方式实现命名空间,namespace1 可以看做为命名空间。
var namespace1 = new Object();
namespace1.class1 = function() {
//对?象初始化代码
}
var obj1 = new namespace1.class1();8.2.类成员
上面的我们已经为类添加了成员和方法,除了上面的方法我们还可以使用prototype的方式来给类添加成员,我们怎么做才是最合理的呢,首先来看下前面的方式:function User() {
//构造函数
}
//成员定义
User.prototype.name = "cary";
User.prototype.show = function() {
alert(this.name);
}上面的方式我们每定义一个类成员都要去写User.prototype,我们可以重构为下面的形式:function User() {
//构造函数
}
//成员定义
User.prototype =
{
name : "cary",
show = function()
{
alert(this.name);
}
}
8.3.私有成员
实现类的私有成员主要是利用变量的作用域,我们在构造函数中实现。
function User() {
//构造函数中定义私有成员
var name="cary";
function show()
{
alert(name);
}
//共有成员
this.setname=function()
{
name="james";
}
}8.4.静态成员我们可以通过给一个函数对象直接添加成员来实现静态成员,如:
function class1()
{ }
//静态属性和方法
class1.staticpr = "staticpr";
class1.staticmet = function()
{ }
//调用
class1.staticmet();我们可以通过给函数对象所在的类Function添加成员来实现给所有的函数对象默认添加静态成员,如下:Function.prototype.staticmet = function()
{ }
function class1()
{ }
//调用
class1.staticmet();9.实现反射机制使用for(...in...)方式,for中的var p来存储User对象的属性和方法,我们来判断是属性还是方法,如下:function User() {
//构造函数
}
//成员定义
User.prototype =
{
name : "cary",
show : function()
{
alert(this.name+"Hello");
}
}
var u=new User();
for (var p in u) {
if(typeof(u[p])=="function") {
u[p]();
}
else {
alert(u[p]);
}
}
发表评论
-
JavaScript事件
2010-05-13 14:37 1238事件(上) JavaScript事件列表 事件 解说 一般 ... -
flex学习
2010-05-06 20:17 780flex学习例子, -
JSON法创建JavaScript对象
2010-01-14 21:33 887<!DOCTYPE html PUBLIC " ... -
JavaScript Math 对象与函数
2010-01-14 21:16 1157Math函数 Math.abs() -- 返回 ... -
JavaScript Date 对象与函数
2010-01-14 21:14 912JavaScript_Date对象说明 Date对象构造函数 ... -
日历控件
2010-01-13 16:03 755日历控件 编辑控件 -
访问iframe里面的javascript函数、对象,兼容IE、Firefox
2009-12-29 23:16 1529假如你当前主页面中嵌入了一个iframe,ID为:iframe ... -
document.createElement等DOM函数与属性
2009-12-18 17:05 11821、创建节点 createElemen ... -
document.createElement("A")的相关属性
2009-12-18 17:03 1922<html> <BODY> ... -
removeChild 使用注意事项
2009-12-18 16:55 857Java代码 var giftBody = document ... -
获取HTML DOM节点元素的方法
2009-12-18 16:47 1056在Web应用程序特别是Web2.0程序开发中,经常要获取页面 ... -
js 按钮交互 元素属性获取
2009-12-18 16:44 1020<html xmlns="http://www ... -
HTML DOM selectedIndex 属性
2009-12-18 16:34 1291定义和用法 selectedIndex 属性可设置或返回下拉 ... -
hyperlink 控制
2009-12-18 16:09 920<html> <head> ... -
onchange()和onblur()
2009-12-18 15:54 1407<html> <head> ... -
js动态显示时间
2009-12-18 15:48 2765<html> <head> ... -
JS时间对象
2009-12-17 18:09 1399时间对象用来操作日期和时间。 Examples 举例 Ret ... -
Javascript 操作select控件大全(新增、修改、删除、选中、清空、判断存在等)
2009-12-16 17:40 7601判断select选项中 是否存在Value="pa ... -
javascript 暂定执行一段时间
2009-12-16 17:31 2113有人说window.setTimeout("func ... -
JS常用对象介绍
2009-12-16 17:22 861click() 对象.click() ------------ ...
相关推荐
Javascript面向对象基础 (朋友给我的 我给大家喽 。)
Javascript面向对象基础.rar
JavaScript面向对象基础PPT,讲述了何谓面向对象、面向对象特点、组成及写法、工厂模式、原型以及如何将普通面向过程的代码转换为面向对象的基本原则
非常不错的js教程,基于其面向对象的特性加以深入阐述,通俗易懂
这个是针对JavaScript的那个章节做的分析,希望对大家能有帮助,想要了解的人可是下来看看~!
JavaScript作为一门浏览器语言的核心思想;面向对象编程的基础知识及其在... 《JavaScript面向对象编程指南》着重介绍JavaScript在面向对象方面的特性,展示如何构建强健的、可维护的、功能强大的应用程序及程序库
《JavaScript面向对象编程指南》内容包括:JavaScript作为一门浏览器语言的核心思想;面向对象编程的基础知识及其在JavaScript中的运用;数据类型、操作符以及流程控制语句;函数、闭包、对象和原型等概念,以代码...
一本非常适合初学者的书,很不错!一本非常适合初学者的书,很不错!
NULL 博文链接:https://chuqq.iteye.com/blog/826664
主要介绍了JavaScript 面向对象基础,结合简单实例形式分析了JavaScript面向对象程序设计中类的定义、类方法与属性相关操作技巧,需要的朋友可以参考下
javascript面向对象技术基础,javascript面向对象技术基础
面向对象编程的基础知识及其在JavaScript中的运用;数据类型、操作符以及流程控制语句;函数、闭包、对象和原型等概念,以代码重用为目的的继承模式;BOM、DOM、浏览器事件、AJAX和JSON;如何实现JavaScript中缺失的...