某人初学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 原型和继承(Prototypes and Inheritance)
Apr 01 Javascript
ASP.NET中AJAX 调用实例代码
May 03 Javascript
window.opener用法和用途实例介绍
Aug 19 Javascript
使用jQuery实现返回顶部
Jan 26 Javascript
详解webpack+angular2开发环境搭建
Jun 28 Javascript
详解Angular4 路由设置相关
Aug 26 Javascript
jquery实现侧边栏左右伸缩效果的示例
Dec 19 jQuery
jQuery动态添加元素无法触发绑定事件的解决方法分析
Jan 02 jQuery
vue项目打包部署_nginx代理访问方法详解
Sep 20 Javascript
vue+canvas实现炫酷时钟效果的倒计时插件(已发布到npm的vue2插件,开箱即用)
Nov 05 Javascript
前端Electron新手入门教程详解
Jun 21 Javascript
node.js文件操作系统实例详解
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中截取字符串支持utf-8
2007/01/18 PHP
php隐藏IP地址后两位显示为星号的方法
2014/11/21 PHP
Laravel5权限管理方法详解
2016/07/26 PHP
JScript中使用ADODB.Stream判断文件编码的代码
2008/06/09 Javascript
js实现无限级树形导航列表效果代码
2015/09/23 Javascript
Javascript页面跳转常见实现方式汇总
2015/11/28 Javascript
vue实现tab切换外加样式切换方法
2018/03/16 Javascript
原生JavaScript实现remove()和recover()功能示例
2018/07/24 Javascript
JS实现图片上传多次上传同一张不生效的处理方法
2018/08/06 Javascript
vue 动态绑定背景图片的方法
2018/08/10 Javascript
JavaScript定时器常见用法实例分析
2019/11/15 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
2020/07/22 Javascript
jquery实现简易验证插件封装
2020/09/13 jQuery
vue实现移动端返回顶部
2020/10/12 Javascript
[01:14:30]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第二场 8.20.mp4
2019/08/22 DOTA
[46:28]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
一则python3的简单爬虫代码
2014/05/26 Python
以一段代码为实例快速入门Python2.7
2015/03/31 Python
Python实现批量下载文件
2015/05/17 Python
详解Django中间件执行顺序
2018/07/16 Python
Linux下Python安装完成后使用pip命令的详细教程
2018/11/22 Python
漂亮的Django Markdown富文本app插件的实现
2019/01/02 Python
python多线程并发及测试框架案例
2019/10/15 Python
Django实现分页显示效果
2019/10/31 Python
pycharm2020.2 配置使用的方法详解
2020/09/16 Python
Python word文本自动化操作实现方法解析
2020/11/05 Python
python空元组在all中返回结果详解
2020/12/15 Python
国外平面设计素材网站:The Hungry JPEG
2017/03/28 全球购物
Koral官方网站:女性时尚运动服
2019/04/10 全球购物
什么是ARP(Address Resolution Protocol)地址解析协议
2013/10/31 面试题
长青弘远的面试题
2012/06/09 面试题
J2ee常用的设计模式?说明工厂模式
2015/05/21 面试题
公益广告语集锦
2014/03/13 职场文书
学生逃课检讨书1000字
2014/10/20 职场文书
2015年大学班级工作总结
2015/04/28 职场文书
Golang 并发编程 SingleFlight模式
2022/04/26 Golang