某人初学javascript的时候写的学习笔记


Posted in Javascript onDecember 30, 2010
/* 
* JavaScript对象就是一组属性(方法)的集合 
* 在该语言中如果变量名或方法名不符合声明规范, 
* 则一定得用方括号“ [] ”引用它 
* 
*/ 
/** 
* <1.>该语句声明了一个class1类,class1相当于构造方法,又叫构造器 
* 也可说声明了一个class1方法 
*/ 
function class1(){ 
this.name="xjl"; //给对象添加属性 
this.say= function(){alert("大家好!");}; //给对象添加方法 
}; 
/** 
* <2.>创建实例用 new 关键字,new 操作符不仅对内部类有效,对用户定义的类也是同样的用法 
* 每个对象可以看作是多个属性(方法)的集合,即 对象名.属性(方法)名 或 对象名[“属性(方法)名”] 
* 方括号 '[]' 适合不确定具体要引用哪个属性(方法)的场合 
*/ 
var a = new class1(); 
//alert(typeof(a)); //typeof(a) 返回a的类型 
//alert(a.name); //每个对象可以看作是多个属性(方法)的集合, 
//alert(a['name']); //用方括号([])引用对象的属性和方法 
//下拉框对象名[下拉框对象.value] 即可获得用户所选的值 也可用 eval(“下拉框对象名.”+下拉框对象.value); 
//a.say(); //调用对象的方法 
//var arr=new Array(); 
//arr['push']('abc'); //为数组添加一个元素,其中的 push 为内置的属性 
//arr['push']('1234'); //为数组添加一个元素 
//alert(arr); 
/** 
* <二.>动态添加、修改、删除对象的属性和方法 
* 
*/ 
var obj = new Object(); 
//添加属性……其中的属性名可任意取 
obj.name="徐建龙"; 
obj.sex = '男'; 
obj['my name'] = "xujianlong"; //使用方括号 “ [] ”可以使用非标识符字符串作为属性名称 
//添加方法……方法名也可任意取,也可传参数 
obj.alert = function(a){ 
alert(a+"你好!"); 
} 
//修改属性,就是把属性的值改成别的内容 
obj.name = "张三"; 
obj['name'] = 'anme'; 
//删除属性,就是把属性的值改成 undefined 或 null 
obj.name = 'undefined'; 
/** 
* <三>使用大括号({})语法创建无类型对象 
*/ 
//在大括号中方属性和方法,属性与属性用逗号隔开,属性与值之间用冒号隔开 
var ob = { 
name:"123", 
say:function(){alert("123")} //最后一个属性或方法不用逗号 
} 
//也可用如下方法定义对象的属性和方法 
var ob1 = {"name":'123','say':function(){alert("abcd");}}; 
/** 
*<四>prototype原型对象 
* 所有的函数(function)对应的类是(Function) 
* prototype 实际上就是表示了一个类的成员的集合。 
* *当通过new 来获取一个类的对象时,prototype 对象的成员都会成为实例化对象的成员。 
*/ 
function class2(){ //创建一个对象 
} 
var ob2 = new class2(); 
class2.prototype.me = function(){alert("123");} //在prototype的前面是,你所创建的类名 
class2.prototype.name = "123"; // 
/** 
* 函数对象和其他内部对象的关系 
*/ 
//typeof(new Function()),typeof(Function),typeof(Array),typeof(Object) 返回字符串“function”这些参数称之为构造器 
//typeof(new Date()),typeof(new Array()),typeof(new Object()) 返回字符串“object” 
/** 
* 传递给函数的隐含参数:arguments,它具有数组的特点,但它不是数组,可用下标来访问它 
*/ 
//arguments 中包含了一个参数 callee, 它表示对 函数对象本身的引用,如下: 
var sum=function(n){ 
if(1==n) 
return 1; 
else 
return n+arguments.callee(n-1); 
} 
//该语句表示声明一个 namespace1 的命名空间 ,如下: 
var namespace1 = new Object(); 
namespace1.class1 = function(){alert("123");}; 
var obj1=new namespace1.class1(); //页面加载时就执行 
/** 
* 使用prototype 对象定义类成员 
*/ 
//在创建实例的语句之后使用函数的prototype属性给类定义新成员,只会对后面创建的对象有效 
//在prototype中的constructor()方法 ,相当于构造方法 
function class1(){ 
//alert('adf'); 
} 
//class1.prototype.constructor(); //页面加载时就执行 
//用prototype 定义的简化 
class1.prototype={ 
//放入一些属性或方法 
//多个属性或方法是用逗号(,)隔开 
} 
//如下代码即是 静态方法和属性 
class1.name="abc"; 
class1.say = function(){/*codes*/} 
//利用反射机制,可以改变 element 中指定的样式,而其他样式不会改变,得到了所要的结果,例如: 
function setStyle(_style){ 
//得到要改变样式的界面对象 
var element=getElement(); 
for(var p in _style){ 
element.style[p]=_style[p]; 
} 
} 
//可以通过拷贝一个类的 prototype 到另外一个类来实现继承,但有缺陷。例如: 
// function class4(){} 
// 
// function class2(){ 
// 
// 
// class2.prototype=class4.prototype; //实现的继承 
// class2.prototype.f = function(){alert("a");} 
// 
//当对class2 进行prototype 的改变时,class4 的prototype 也随之改变 
// instanceof 操作符来判断一个对象是否是某个类的实例, 例如: 
var a = new class2(); 
a instanceof class2; //返回一个 bool ,如果 a 的class2 中的继承类,则也是 true 
//一种更好的继承 
for(var p in class1.prototype){ 
class2.prototype[p]=class1.prototype[p]; 
} 
class2.prototype.ma=function(){ 
alert(123); 
} 
//当对class2 进行prototype 的改变时,class4 的prototype 不会改变 
/** 
* prototype-1.3.1框架中的类继承实现机制 
*/ 
//------------------------------------------------------------------------------------------- 
//该语句为每个对象天加一个extend 方法,代码如下; 
Object.extend = function(destination, source) { 
for (property in source) { 
destination[property] = source[property]; //将source中所有的属性或方法都赋值给destination 
} 
return destination; 
} 
//通过Object类为每个对象添加方法extend 
Object.prototype.extend = function(object) { 
return Object.extend.apply(this, [this, object]); 
} 
Object.extend.apply(this,[this,object]); 
//class1继承与class2 ,好处是 通过new class2()相当于把class2的prototype的副本赋给class1 
//在class1中的prototype的改变,不会影响class2中的prototyp 
class1.prototype=(new class2()).extend({/*class1要增加的属性或方法*/}); 
/** 
* 只做了一个声明而未实现的方法,具有虚函数的类就称之抽象类 ,抽象类是不能实例化的 
*/ 
//里虚方法不需经过声明,而直接使用了。这些方法将在派生类中实现,例如: 
function c1(){} 
c2.prototype={ 
fun:function(){ this.fn();}//其中的fn方法未定义 
} 
function c2(){} 
c1.prototype=(new c2()).extend({ 
fn:function(){var x = 1;} 
}); 
//this.initialize.apply(this, arguments);该语句是把创建对象时的参数传给initialize方法 
/*** 
* 在javascript中也可以用 try-catch-finally 语句用于捕获异常或错误信息 
* 其中在catch(e)的小括号中的e 是必须的 e是一个名为error 的对象 
* e=new Error(message)来创建这个对象,异常的描述被作为error 对象的一个属性message, 
*/ 
//该代码演示了异常的抛出 
function s(a,b){ 
try{ 
if(b==0) 
throw new Error("除数不能为零!........"); 
else 
alert(a/b) 
}catch(e){ 
document.write(e.message);///通过message 获得Error中的实参 
} 
} 
onlaod=s(1,0);
Javascript 相关文章推荐
javascript类继承机制的原理分析
Sep 12 Javascript
使用JavaScript库还是自己写代码?
Jan 28 Javascript
jquery删除指定子元素代码实例
Jan 13 Javascript
JavaScript分秒倒计时器实现方法
Feb 02 Javascript
Jquery元素追加和删除的实现方法
May 24 Javascript
Javascript类型系统之String字符串类型详解
Jun 21 Javascript
大型JavaScript应用程序架构设计模式
Jun 29 Javascript
微信小程序 使用canvas制作K线实例详解
Jan 12 Javascript
Bootstrap栅格系统使用方法及页面调整变形的解决方法
Mar 10 Javascript
详谈jQuery.load()和Jsp的include的区别
Apr 12 jQuery
JS实现浏览上传文件的代码
Aug 23 Javascript
Vue中自定义全局组件的实现方法
Dec 08 Javascript
Javascript延迟执行实现方法(setTimeout)
Dec 30 #Javascript
JavaScript的document对象和window对象详解
Dec 30 #Javascript
javascript hashtable 修正版 下载
Dec 30 #Javascript
javascript中运用闭包和自执行函数解决大量的全局变量问题
Dec 30 #Javascript
javascript中创建对象的三种常用方法
Dec 30 #Javascript
javascript 闭包疑问
Dec 30 #Javascript
javascript数字数组去重复项的实现代码
Dec 30 #Javascript
You might like
用php过滤危险html代码的函数
2008/07/22 PHP
php中$this-&amp;gt;含义分析
2009/11/29 PHP
php入门学习知识点六 PHP文件的读写操作代码
2011/07/14 PHP
php编写的抽奖程序中奖概率算法
2015/05/14 PHP
php实现微信扫码自动登陆与注册功能
2016/09/22 PHP
php计算多个集合的笛卡尔积实例详解
2017/02/16 PHP
JQuery 操作select标签实现代码
2010/05/14 Javascript
给jQuery方法添加回调函数一款插件的应用
2013/01/21 Javascript
js的onload事件及初始化按钮事件示例代码
2013/09/25 Javascript
在ASP.NET中使用JavaScript脚本的方法
2013/11/12 Javascript
jquery实现键盘左右翻页特效
2015/04/30 Javascript
javascript作用域链(Scope Chain)用法实例解析
2015/11/30 Javascript
jQuery对html元素的取值与赋值实例详解
2015/12/18 Javascript
IE8 内存泄露(内存一直增长 )的原因及解决办法
2016/04/06 Javascript
教你如何在Node.js中使用jQuery
2016/08/28 Javascript
javascript设置文本框光标的方法实例小结
2016/11/04 Javascript
原生js实现新闻列表展开/收起全文功能
2017/01/20 Javascript
jQuery实现优雅的弹窗效果(6)
2017/02/08 Javascript
bootstrap confirmation按钮提示组件使用详解
2017/08/22 Javascript
详解小程序云开发数据库
2019/05/20 Javascript
微信小程序如何修改radio和checkbox的默认样式和图标
2019/07/24 Javascript
使用Vue-Awesome-Swiper实现旋转叠加轮播效果&amp;平移轮播效果
2019/08/16 Javascript
JS判断数组四种实现方法详解
2020/06/29 Javascript
解决Can't find variable: SockJS vue项目的问题
2020/09/22 Javascript
Python 字符串定义
2009/09/25 Python
对pandas处理json数据的方法详解
2019/02/08 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
2019/07/25 Python
Evisu官方网站:日本牛仔品牌,时尚街头设计风格
2016/12/30 全球购物
西班牙太阳镜品牌:Hawkers
2018/03/11 全球购物
爽歪歪广告词
2014/03/20 职场文书
个人廉洁自律承诺书
2014/03/27 职场文书
医生个人自我剖析材料
2014/10/08 职场文书
六查六看个人剖析材料
2014/10/14 职场文书
2015毕业生实习工作总结
2014/12/12 职场文书
Nginx使用X-Accel-Redirect实现静态文件下载的统计、鉴权、防盗链、限速等
2021/04/04 Servers
如何用PHP实现分布算法之一致性哈希算法
2021/05/26 PHP