某人初学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 相关文章推荐
求得div 下 img的src地址的js代码
Feb 28 Javascript
JavaScript监测ActiveX控件是否已经安装过的代码
Sep 02 Javascript
JS简单实现登陆验证附效果图
Nov 19 Javascript
理解Javascript的动态语言特性
Jun 17 Javascript
JavaScript动态改变div属性的实现方法
Jul 22 Javascript
jQuery进行组件开发完整实例
Dec 15 Javascript
easyui中combotree循环获取父节点至根节点并输出路径实现方法
Nov 10 Javascript
js从输入框读取内容,比较两个数字的大小方法
Mar 13 Javascript
微信小程序页面间通信的5种方式
Mar 31 Javascript
js 两个日期比较相差多少天的实例
Oct 19 Javascript
浅谈react受控组件与非受控组件(小结)
Feb 09 Javascript
vue动态路由:路由参数改变,视图不更新问题的解决
Nov 05 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抓即时股票信息
2006/10/09 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
2014/06/26 PHP
PHP中使用break跳出多重循环代码实例
2015/01/21 PHP
JQuery.Ajax之错误调试帮助信息介绍
2013/07/04 Javascript
js中方法重载如何实现?以及函数的参数问题
2013/08/01 Javascript
extjs render 用法介绍
2013/09/11 Javascript
javascript内存管理详细解析
2013/11/11 Javascript
深入理解JQuery keyUp和keyDown的区别
2013/12/12 Javascript
ajax请求乱码的解决方法(中文乱码)
2014/04/10 Javascript
javascript操作字符串的原生方法
2014/12/22 Javascript
浅谈JavaScript的事件
2015/02/27 Javascript
javascript中this指向详解
2016/04/23 Javascript
AngularJS封装指令方法详解
2016/12/12 Javascript
Vue作用域插槽slot-scope实例代码
2018/09/05 Javascript
在React中写一个Animation组件为组件进入和离开加上动画/过度效果
2019/06/24 Javascript
Python 面向对象 成员的访问约束
2008/12/23 Python
在Python的Tornado框架中实现简单的在线代理的教程
2015/05/02 Python
python实现跨excel的工作表sheet之间的复制方法
2018/05/03 Python
深入解析Python小白学习【操作列表】
2019/03/23 Python
python算法与数据结构之冒泡排序实例详解
2019/06/22 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
2020/01/04 Python
Python标准库shutil模块使用方法解析
2020/03/10 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
2020/04/26 Python
html5播放视频且动态截图实现步骤与代码(支持safari其他未测试)
2013/01/06 HTML / CSS
台湾前三大B2C购物网站:MOMO购物网
2017/04/27 全球购物
社区端午节活动方案
2014/01/28 职场文书
危爆物品安全大检查大整治工作方案
2014/05/03 职场文书
环境监测与治理技术专业求职信
2014/07/06 职场文书
补充协议书
2015/01/28 职场文书
人事局接收函
2015/01/30 职场文书
2015年领班工作总结
2015/04/29 职场文书
首都博物馆观后感
2015/06/05 职场文书
老人与海读书笔记
2015/06/26 职场文书
机关干部正风肃纪心得体会
2016/01/15 职场文书
基于Python实现对比Exce的工具
2022/04/07 Python
win10重装系统后上不了网怎么办 win10重装系统网络故障的解决办法
2022/07/23 数码科技