博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript--基于对象的脚本语言学习笔记(一)
阅读量:5943 次
发布时间:2019-06-19

本文共 5632 字,大约阅读时间需要 18 分钟。

1、两种嵌入js的方式
   使用javascript前缀构建url:<a href="javascript:alert('执行JavaScript。

。')">执行js</a>

   js脚本放在<style></style>之间:

") </script>

2、假设没有声明变量直接使用会报错:ReferenceError: x is not defined

   假设声明了没有赋值,则该变量的值为undefined

3、单独保存js 文件
4、3个强制类型转换的函数
   toString()将布尔值、数值转换为字符串
   parseInt()将字符串、布尔值转换为整数
   parseFloat()将字符串、布尔值转换为浮点数
5、javascript的变量没有块范围,这一点和Java、C++等不同
6、假设用var来定义变量。程序会强制定义一个新变量。
   虽然js是弱类型脚本语言,声明变量时无需指定变量的基本类型。

可是js的值

   保存到内存时也是有类型的。有5个基本类型。
7、Infinity、-Infinity与其它数值进行算术运算时,整个算式变成:NaN
   两个Infinitiy是相等的
   两个NaN不等
8、js中的复合类型
   Object:对象
   Array:数组
   Function:函数
9、js中的数组元素类型并不要求同样,且数组长度能够随意变化
   訪问数组元素时不会产生数组越界。仅仅会显示该元素的值为undefined
10、void强制指定表达式不会有返回值
11、

var a=[];    for(var i=0;i<10;a[i++]=i+10);//利用空语句    for(index in a){	document.writeln(a[index]+"
"); }//index保存的是索引值
12、js支持自已定义错误。js仅仅有一个异常类:Error,catch块类也无需声明异常的类
for(var i=0;i<10;i++){    if(i>4) throw new Error("用户自己定义错误");		     document.writeln(i+"
");}
13、使用with避免反复书写对象
with(object){statements}
   如:省写了document
with(document){		 writeln( "hello
"); writeln( "hello2
"); writeln( "hello3
"); }
14、js的函数即是可反复调用的“程序块”。也是一个Function实例
    推荐使用匿名函数
var f=function(parameter){       函数体    };
    样例:
var a=function(){ alert("调用匿名函数")};	a();  //函数调用
  
15、递归一定要向已知点追溯
★16、注意:js的函数不仅是一个函数。更是一个类,在定义js函数的同一时候也得到一个与该函数同名的类
     该函数也是该类的唯一构造器。(定义一个函数的同一时候,实质上也定义了一个构造器。当定义函数时,
     函数中以this修饰的变量是实例属性,假设某个属性值是函数时,就可以觉得该属性变成了方法)
     因此有两种方式调用函数:
     1.直接调用
     2.用new keyword调用。这样总会有返回值,返回值就是一个js对象
例:function Person(name,age){		this.age=age;		this.name=name;		this.info=function(){		document.writeln("我的名字是:"+this.name+"
"); document.writeln("我的age是:"+this.age+"
"); }; } //创建p对象 var p=new Person("周鹏程",24); p.info();//Person类定义了一个方法,通过使用匿名函数使代码更加简洁
上面把js中定义的一个函数附加到某个对象上,作为该对象的方法
其实,假设没有明白指定将函数“附加”到哪个对象上,该函数将“附加”到window对象上
17、js与Java不一样,它是一种动态语言。它同意随时为对象添加属性和方法
    事实上当我们直接为对象的某个属性赋值时。即视为给对象添加属性。

    注意:JavaScript对象不能訪问它所属类的类属性
    假设直接定义一个全局变量。实际上这个变量会被“附加”到window对象上。作为window对象的实例属性
18、js中调用函数的3种方法
   1.直接调用:以函数“附加”的对象作为调用者,在函数后括号内传入參数来调用函数
   2.call()方法动态调用函数
    样例:

var each=function(arr,fn){			for(var s in arr){				fn.call(null,s,arr[s]);			}		}		each([4,20,3],function(a,b){			document.writeln("数组的第"+a+"个元素是:"+b+"
"); } ); //调用者.函数(參数1。參数2...)<=>函数.call(调用者。參数1,參数2...)
   3.以apply()方法调用函数
     通过call()调用函数时,必须在括号里具体地列出每一个參数。
     而通过apply()调用函数时,能够在括号里以arguments来代表全部參数
var myfun=function(a,b){		alert("a="+a+"\nb="+b);		}		myfun(1,2);		myfun.call(window,1,2);				var fun2=function(num1,num2){		    myfun.apply(this,arguments);		}		fun2(1,2);		myfun.apply(window,[1,2]);//arguments来代表全部參数,arguments本质上是个数组
19、js中函数是“一等公民”,它永远是独立的,函数永远不会从属于其它类、对象
function Person(name){			 this.name=name;			 this.info=function(){				 alert("我的name是:"+this.name);			 }		 }		 var per=new Person("zpc");		 per.info();		 var name="window的name";		 per.info.call(window);		//p.info()就可以引用这个函数,能够使用call()方法指定调用者
20、js中能够使用空參数,没有传入实參的參数值将作为undefined处理。js中没有函数重载一说,函数名就是函数的唯一标识
    函数名同样仅仅会导致覆盖
function test1(){alert("test1");}    function test1(s){alert("test1"+s);}    test1();//输出test1undefined
21、因为js是弱类型语言,函数定义的參数列表无需类型声明,这一点为函数调用埋下了隐患。
    能够使用“鸭子类型”的理论改善这个问题:即在函数中先推断參数类型。并推断參数是否包括了须要訪问的属性、方法,
    当这些条件都满足时。程序才開始真正处理调用參数的属性、方法。
22、js对象的实质就是关联数组
    样例:
function Person(name,age){		this.age=age;		this.name=name;		this.info=function(){		alert("info method!");		}		}		var p=new Person("zpc",24);				//alert(p[age]);		alert(p['age']);//也能输出正确的年龄		alert(p.age);		for(proname in p){		document.writeln("p对象的"+proname+"属性值为:"+p[proname]+"
"); }
23、尽量避免使用内嵌函数为类定义方法。而应该使用添加prototype属性的方式来添加方法。通过prototype属性来为类动态地
    添加方法会让程序更加安全,性能更加稳定。

js的全部类(也就是函数)都有一个prototype属性。当我们为JavaScript类的prototype

    属性添加函数、属性时。则可视为对原有类的扩展。通过使用prototype属性能够对js的内建类进行扩展。

样例:

function Person(age,name){		 this.name=name;		 this.age=age;		 this.info=function(){			document.writeln("姓名:"+this.name+"
"); document.writeln("年龄:"+this.age+"
"); } } var p1=new Person(23,"周鹏程"); p1.info(); //p1.walk();这里还没有给Person加walk方法 //全部的Person实例共享一个walk方法,节约内存 Person.prototype.walk=function(){ document.writeln(this.name+"正在慢慢溜达。。
"); } document.writeln("
"); var p2=new Person(25,"鸟鹏"); p2.info(); p2.walk(); p1.walk();
24、js中创建对象的3种方式:
    1.使用new keyword调用构造器创建对象,如上面的样例
    2.使用Object直接创建对象
var per=new Object();		per.name="鸟鹏";		per.age=24;		per["gender"]="男";//js同意动态加入属性,js对象的本质是关联数组		document.writeln(per.name+"
"+per.age+"
"+per.gender);
     js同意将一个已有的函数加入为对象的方法
     样例:
var per=new Object();		per.name="鸟鹏";		per.age=24;		function abc(){		document.writeln("对象的name属性:"+this.name+"
对象的age属性:"+this.age+"
"); } per.info=abc;//加入abc函数为per对象的方法 per.info();
     js通过new Function()方法来定义匿名函数。能够通过这样的方式来为js对象添加方法
     样例:
var per=new Object();		per.name="鸟鹏";		per.age=24;		per.info=new Function("document.writeln('对象的name属:'+this.name);'
';document.writeln('对象的age属性:'+this.age);"); per.info();
    3.使用json语法创建对象
var p={		name:"zpc",		age:32		};		alert(p);		//以上就是用json语法创建的p对象		var person={			name:"周鹏程",			gender:'male',			//属性值能够是随意的基本类型,甚至是json语法创建的对象			son:{			name:"鸟鹏",			age:12					},			info:function(){				document.writeln("姓名:"+this.name);				document.writeln("gender:"+this.gender);				document.writeln("son:"+this.son);			}		}		person.info();		//以上就是用json语法创建的person对象		其实json语法不只能够用于创建对象,使用JSON语法创建数组也是很常见的情形		传统创建数组方式一:		var a=new Array(); 		a[0]='zpc';		a[1]='niao';		传统创建数组方式二:		var a=new Array('zpc','niao');				使用JSON创建数组:		var a=['zpc','niao'];	//一个复杂的JSON对象		var person={			name:"周鹏程",			age:24,			//第三个属性是数组			schools:['小学','中学','大学'],			//第四个属性是对象数组			parents:[			  {				name:'father',				age:50,				address:'shanghai'			  },						  {				name:'mother',				age:49,				address:'nanjing'			  }			]		};		alert(person.parents);		alert(person.parents[0].name);	//其实json已经发展成为一种轻量级的、跨语言的数据交换格式,成为了xml数据交换格式的有力竞争者

转载地址:http://sewxx.baihongyu.com/

你可能感兴趣的文章
oracle sql语句实现累加、累减、累乘、累除
查看>>
SCNetworkReachabilityRef监测网络状态
查看>>
3D地图的定时高亮和点击事件(基于echarts)
查看>>
接口由40秒到200ms优化记录
查看>>
java 视频播放 多人及时弹幕技术 代码生成器 websocket springmvc mybatis SSM
查看>>
Activiti6.0,spring5,SSM,工作流引擎,OA
查看>>
第十三章:SpringCloud Config Client的配置
查看>>
使用 GPUImage 实现一个简单相机
查看>>
CoinWhiteBook:区块链在慈善事业中的应用
查看>>
Mac上基于Github搭建Hexo博客
查看>>
阿里云服务器ECS开放8080端口
查看>>
前端常用排序详解
查看>>
Spring中实现监听的方法
查看>>
使用Tooltip会出现一个问题,如果行上出现复选框
查看>>
11.03T1 DP
查看>>
P2924 [USACO08DEC]大栅栏Largest Fence
查看>>
jQuery操作table tr td
查看>>
工作总结:MFC自写排序算法(升序)
查看>>
螺旋队列问题之二
查看>>
扩展运算符和解构赋值的理解
查看>>