javascript高级学习笔记整理

一.js面向对象的一种实现


代码如下:

  <script type="text/javascript">
function Person() {
this.name = "张三";
this.age = 0;
var nickName = "小三"; //类似私有变量,函数中的局部变量在函数执行完后自动销毁.
this.SayHi = function () {
alert("我的名字是" + this.name + " ,大家都叫我" + nickName + " ,我今年已经" + this.age + "岁了");
}
}
/////////////////////////
function Student(myclass, myteacher) {
this.myClass = myclass;
this.myTeacher = myteacher;
this.SayHi = function () {
if (this.myClass != undefined) {
alert("我是"+this.myClass+"的"+this.name);
}
else if (arguments.length == 2) {
alert("我是" + this.myClass + "的" + this.name + ", 我的老师是" + this.myTeacher);
}
else {
new Person().SayHi();
}
}
}
Student.prototype = new Person(); //创建继承关系
//////////////
onload = function () {
var p = new Person(); //类似实例化类Person,对象的创建(解析两次)并不是推荐用法
p.age = 18; //给Person的age赋值, age相当于属性
p.SayHi(); //调用Person里的公共方法,输出结果:我的名字是张三 ,大家都叫我小三 ,我今年已经18岁了!
var stu = new Student('三年级二班', 'jameszou'); //有参构造函数
stu.name = 'le'; //父类的属性
stu.SayHi(); //Student重写了SayHi方法
var stu1 = new Student();
stu1.myClass = '三年级三班';
stu1.myTeacher = 'ly';
stu1.SayHi(); //输出:我是三年级三班的张三"
var stu2 = new Student();
stu2.age = 20;
stu2.SayHi();//输出:?:我的名字是张三,大家都叫我小三,我今年0岁了
}
</script>

二.6种简单数据类型:
1)Undefined.一个变量被定义但是没有给他赋值.
2)Null.(引用类型)
3)Number.数值类型
  var num = 1.0这个时候num是int类型,只有当小数点后面不为0的时候才是浮点型,
  isNaN()可以判断传人的值是否为Number类型,
  var num = parseInt('112412aaa11'); num=112412;
4)Boolean.
5)String
6)function
Function类型:
执行环境:就是当前函数(方法)所处在的父环境。比如在window下执行的函数他的执行环境就是window。
没有块级作用域:if等语句没有用块状作用域,if,for等用大括号括起来的代码并不能形成一个块状作用域。
var变量声明:用var声明变量时,会他把添加到最近的可用环境,即不用var定义的一个变量是全局变量.
声明语句会首先执行,以保证程序的运行.
垃圾回收:变量对象设为null的时候原对象将被自动回收.
属性:
this.函数所在的执行环境,函数在执行时所处的作用域.
prototype(原型).

三.复杂类型
Object:
Object类型本质是一个无序的键值对列表,类似于集合,json格式。
创建Object可以有多种方式:
  1)var obj = new Object(); obj.name="lz"; obj.age=17;
  2)var s = {}; s.name="ly"; s.age=18;
  3)var s = {"name":"ln","age":"17"};
访问Object对象的属性的方法:
  1)obj.name
  2)obj["name"]
Array类型:
相当于List<T>,length属性是可读写的(可以利用这一点删除数组元素)
数组的栈方法:(后进先出)
  push() 往里加 pop() 从栈头往外拿
数组的队列方法:(先进先出)
  shift() 从队列尾部往外拿 unshift() 从队列尾部往里加
排序:
  sort() 排正序,将数组中的数据按照一定的顺序排列,参数可以传递一个可传入比较方法(类似于接口) reverse() 翻转
  连接数组: concat()
  var colors=["a","b"];
  var newcolor=colors.concat("yellow",["c","d"]);//colors有5个元素。
  concate方法中若传入数组,会把该数组拆分,将其中元素加入目标数组中。若传入json格式数据,一个json数据就看成一个元素加入数组。
四.其他
typeof: return true or false,
instanceof 判断复杂类型的类型 return true or false,如果用它来判断值基本类型类型永远返回false,
eval()他会把eval()中的参数解析出来,插入到eval执行的位置,效果相当于在相应的位置直接写入JS代码

(0)

相关推荐

  • javascript高级学习笔记整理

    一.js面向对象的一种实现 复制代码 代码如下: <script type="text/javascript"> function Person() { this.name = "张三"; this.age = 0; var nickName = "小三"; //类似私有变量,函数中的局部变量在函数执行完后自动销毁. this.SayHi = function () { alert("我的名字是" + this.n

  • JavaScript学习笔记整理_setTimeout的应用

    setTimeou的t应用 var ids = []; function foo1(i) { this.i = i; console.log('i = '+i); ids[0] = setTimeout((function () { foo1(i); }),1000); } function foo2(j) { this.j = j; console.log('j = '+j); ids[1] = setTimeout((function () { foo2(j); }),1000); } fo

  • JavaScript学习笔记整理_关于表达式和语句

    表达式和语句 eval( ) 只有一个参数 参数非字符串时,直接返回这个参数: 参数为字符串时,它把字符串当成JavaScript代码进行编译,编译失败则抛出语法错误,编译成功则执行代码,并返回最后一条语句的值,若没有值则返回undefined eval()使用了调用它的变量的作用域环境 它接收的字符串参数,在作为单独的代码时,必须是有语义的,否则编译失败 delete运算符:用来删除对象的自由属性.数组的元素, 删除属性后,属性将不存在,而删除数组元素后,会在数组内留下一个值为undefine

  • JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用

    如下所示: //实现枚举类型,扑克牌应用 function creatEnum(p){ //构造函数 var Enumeration = function(){throw 'can not Instantiate Enumerations';}; //重写原型并将原型赋值给变量proto var proto = Enumeration.prototype = { constructor:Enumeration, toString:function(){return this.name;}, va

  • JavaScript学习笔记整理_用于模式匹配的String方法

    用于模式匹配的String方法: String支持4种使用正则表达式的方法: seach()用于检索,参数是一个正则表达式,返回第一个与之匹配的子串的位置,找不到则返回-1,如果参数不是正则表达式,则首先会通过RexExp构造函数将它转换成正则表达式,seach()方法不支持全局搜索,它忽略修饰符g: replace()用于检索与替换操作,第一个参数是一个正则表达式,第二个参数是要进行替换的字符串.它对调用该方法的字符串检索,按照模式匹配子串替换成第二个参数,若包含修饰符g则全文匹配.若第一个参

  • jqGrid 学习笔记整理——进阶篇(一 )

    在浏览导航栏添加所需按钮 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>DEMO</title> <link rel="stylesheet" type="text/css" href="css/jquery-ui.min.css" /> <link rel=&

  • Java中jqGrid 学习笔记整理——进阶篇(二)

    相关阅读: Java中jqGrid 学习笔记整理--进阶篇(一) 本篇开始正式与后台(java语言)进行数据交互,使用的平台为 JDK:java 1.8.0_71 myEclisp 2015 Stable 2.0 Apache Tomcat-8.0.30 Mysql 5.7 Navicat for mysql 11.2.5(mysql数据库管理工具) 一.数据库部分 1.创建数据库 使用Navicat for mysql创建数据库(使用其他工具或直接使用命令行暂不介绍) 2. 2.创建表 双击打

  • JavaScript继承学习笔记【新手必看】

    JavaScript作为一个面向对象语言(JS是基于对象的),可以实现继承是必不可少的,但是由于本身并没有类的概念,所以不会像真正的面向对象编程语言通过类实现继承,但可以通过其他方法实现继承.实现继承的方法很多,下面就只是其中的几种. 一. 原型链继承 function Person() { //被继承的函数叫做超类型(父类,基类) this.name='mumu'; this.age='18'; } Person.prototype.name='susu';//当属性名相同时需就近原则,先在实

  • Javascript基础学习笔记(菜鸟必看篇)

    什么是变量? 变量是用于存储信息的容器 变量的声明 语法: var 变量名 变量名 = 值; 变量要先声明再赋值 变量可以重复赋值 变量的命名规则 变量必须以字母开头: 变量也能以$和_符号开头(不过我们不推荐这么做): 变量名称对大小写敏感(a和A是不同的变量). 语句 语句以一个分号结尾:如果省略分号,则由解析器确定语句的结尾. 有个好的编码习惯,都要以 ; 结尾 数据类型 在JavaScript中,一段信息就是一个值(value).值有不同的类型,大家最熟悉的类型是数字.字符串(strin

  • Python学习笔记整理3之输入输出、python eval函数

    1. python中的变量: python中的变量声明不需要像C++.Java那样指定变量数据类型(int.float等),因为python会自动地根据赋给变量的值确定其类型.如 radius = 20,area = radius * radius * 3.14159 ,python会自动的将radius看成"整型",area看成"浮点型".所以编程时不用再像之前那样小心翼翼的查看数据类型有没有出错,挺人性化的. 2. input和print: 先贴个小的程序 #

随机推荐