Would you like to react to this message? Create an account in a few clicks or log in to continue.
搜索
 
 

结果按:
 


Rechercher 高级搜索

关键词

最新主题
» js在html中的加载执行顺序
日常js之-对象                                                        Empty10/09/13, 06:50 am 由 design_ss

» javascript 函数的方法call()和apply()
日常js之-对象                                                        Empty09/09/13, 05:10 am 由 design_ss

» JS中typeof与instanceof的区别
日常js之-对象                                                        Empty08/08/13, 11:10 am 由 design_ss

» JS中的构造函数解析
日常js之-对象                                                        Empty08/08/13, 09:44 am 由 design_ss

» js对象属性方法大总结
日常js之-对象                                                        Empty08/08/13, 08:46 am 由 design_ss

» js中的值类型和引用类型小结 文字说明与实例
日常js之-对象                                                        Empty08/08/13, 06:35 am 由 design_ss

» CSS3中轻松实现渐变效果
日常js之-对象                                                        Empty05/07/13, 09:48 am 由 design_ss

» jQUery 常用实例
日常js之-对象                                                        Empty03/07/13, 09:56 am 由 design_ss

» mask_layer 遮照
日常js之-对象                                                        Empty03/07/13, 08:18 am 由 design_ss

十一月 2024
周一周二周三周四周五周六周日
    123
45678910
11121314151617
18192021222324
252627282930 

日历 日历

合作伙伴
免费论坛

免費論壇




日常js之-对象

 :: 前端制作 :: js

向下

日常js之-对象                                                        Empty 日常js之-对象

帖子  design_ss 23/11/12, 06:20 am

在《javascript权威指南》中说到,js中一切皆为对象。那我们总结下 一共有哪些对象,并且都要怎么定义他们,怎么使用他们,怎么扩展他们。

1. 定义对象
首先我们需要知道,我们要怎么定义他们。

1.1 现在最火的json对象:用在方便同ajax交互下.
var json = {"name":"hc","***":"1"};
//使用www.2cto.com
alert(json.name+" "+json.***);
为什么json会这么火呢?因为在我没有接触json前.通过ajax返回数据,解析文本串,是通过”|”来的. 例如:
var strResult = ajax.responseText;
http://ajax.responseTex为假设存放ajax返回文本. 1|id=’fffff’|name=’ccc’
如果我要获取name 我就需要 var attr = strResult.split(‘|' )[2];
这样既不直观也不面向对象。所以 当我接触了json后。一下就替换到字符串分割的这种做法了.

同时顺带说题外话,json字符串格式要求也比较松散 .上面的 var json={“name”} 的
name,可以使用双引号,单引号,甚至不用引号都可以。但是如果你使用jQuery等外带框架来进行解析的时候,则必须带上双引号。如果你使用最松散的
方式来解析的话 var json = eval("(“+str+”)”);//这样要求最小,但是容易被注入。
1.2 最原生的对象 : object

var obj = new Object();
//等价的json申明方式就是
var obj = {};
//所以在各大js框架中,基本上看不到new Object()这种写法,都是 obj = {}的写法;简单明了

1.3 最像类的对象: function
function User(name,***){
//这样是申明类的属性

this.name=name;

this.*** = ***;

//这样是申明类的公共方法
this.getMyFullName=function(){
return _firstname+this.name;
}

//这个是定义类的私有变量
var _name= name;
var _firstname="黄";

//这个是定义类的私有方法
function get***(){
}
}
定义好一个类,接下来就是实例他的。和C#一样,通过new 类来实例化他
var my = new User("hc","1");
alert(my.name);
alert(my.getMyFullName());

2.扩展对象
在各个js框架中基本都是这么几种方式来定义对象。我们知道怎么定义对象后。就需要知道怎么扩展他们。

要扩展对象,无非分为2种 ,一种是扩展整个类,一种就是只扩展某个类的实例化


2.1 prototype 属性

prototype 属性就是javascript用来满足我们扩展整个类 这个需求而产生的。
prototype 定义是 该属性指向当前对象所指向的原型。
光说定义和概念肯定不好理解,打个比方。如果你有需求想要在所有字符串或者数组上加一个方法,你要找谁?
微软才不会给你加个方法。所以这时候 prototype派上用场了.
String.prototype.getTempMethod = function () {
return "hc";
}
var str = "c";
alert(str.getTempMethod());//这样在string中你就拥有的你自己的专属方法

2.2 私有扩展

如果你只想你当前对象扩展一个方法,那么非常的简单,因为在js中所有方法,字段都是属性。即使是不存在属性方法也可以直接使用
只是它的值为undefined

//这时候alert的方法是undefined
var obj = {};
//这时候就在这个对象上定义了一个alert方法了
obj.alert = function(){{
}
摘自 ksh.xy

design_ss

帖子数 : 122
积分 : 373
威望 : 0
注册日期 : 11-12-28

返回页首 向下

返回页首


 :: 前端制作 :: js

 
您在这个论坛的权限:
不能在这个论坛回复主题