Js学习基础

1:关于js中的数组

这里面可以是键值对的形式来存储的,我们必须利用forIn来输出,这就相当于foreach一样。

  1. var dir = new Array();
  2. dir['0'] = '1111';
  3. dir['1'] = '2222';
  4. dir['2'] = '3333';
  5. alert(dir['0']);
  6. for (var key in dir) {
  7.     alert('1'+key+'2'+dir[key]);
  8. }

键值对集合的形式

  1. var dicr = { '0': 'ahiu', '1': 'xiaohui', '2': 'aahui' };
  2. for (var key in dicr) {
  3.     alert(''+key+' '+dicr[key]);
  4. }

2:js中的String对象

CharAt(index)方法,获取指定索引位置的字符(索引从0开始)

  1. var meg = '啊四道口附近的回复';
  2. alert(meg.charAt(4));

indexOf('',startIndex):获取指定字符第一次出现的次数,startIndex表示从第几个开始找。

Split('分隔符',limit):根据分隔符将一个字符串返回一个数组,limit为返回数组的个数。

SubStr(startIndex,len):截取字符串,从第几个开始startIndex,截取几个字符len。

Substring(startIndex,stopIndex):截取字符串,从什么地方开始到什么地方结束。

ToUpperCase():转换大小写。

3:js中面向对象

à函数名小写,是函数,大写就是对象<js中叫做构造函数>。

à下面的是将person当作了普通的函数来调用。可以直接进行调用。

  1. function person() {
  2.  
  3. }
  4.  
  5. person();

à这里是当作对象来使用。当成类来使用

  1. function Person() {
  2.  
  3. }
  4.  
  5. var p = new Person();

à通过构造函数创建对象,且对象可以看成键值对集合,可以进行遍历(forIn)。这里的this就是我们的Person对象。就相当于创建了user_name,等变量。也可以直接点就可以直接创建。

  1. //通过构造函数创建Person对象
  2. function Person(name,age,email) {
  3.     this.user_name = name;
  4.     this.user_age = age;
  5.     this.user_email = email;
  6.     this.sayHello= function() {
  7.         alert(this.user_name+' '+this.user_age+' '+this.user_email);
  8.     }
  9. }
  10. var p = new Person('阿辉', '23', 'zhanghui.com');
  11. p.sayHello();

à通过对象字面量直接创建对象(集合初始化器)

  1. var p1 = {
  2.     user_name: 'ahui',
  3.     user_age: '23',
  4.     user_email: 'zhanghui.com',
  5.     sayHello: function() {
  6.         alert('大家好,才是真的好,我是:'+this.user_name);
  7.     },
  8.     sau_Hi: function() {
  9.         alert('ss'+this.user_email);
  10.     }
  11. };
  12. p1.sayHello();

4:instanceod判断哪个对象是那个类型

通过对象instanceof类型(),可以判断一个对象是否是某个类型。

  1. function person(parameters) {
  2.  
  3. }
  4. alert(person instanceof person);
  5. alert(person instanceof Object);

5:函数对象中的prototype属性:原型

解释:原型,雏形,蓝本。

每个方法可以存到原型对象。原型对象是个单独的对象,是减少程序的运行时间。比如申明两个相同的函数里面若只是方法不同,则这些方法不会保存到栈中,他们二者相同的部分都保存到prototype中。

利用这个来实现js的继承,关于原型对象,属性和方法都可以存进去,但是大多数存储的是方法。

一般的普通对象没有这个属性,只有函数对象才有,相当于父类的方法,但是孩子不继承它的。可是孩子对象可以访问到父类的prototype方法中方法。

  1. function Person(name,age,email) {
  2.     this.user_age = age;
  3.     this.user_email = email;
  4.     this.user_name = name;
  5. }
  6. //这里就是实现了js中的继承的关系
  7. Person.prototype.sayHello=function() {
  8.     alert('11'+this.user_name);
  9. };
  10. var p1 = new Person('第一', '23', '333');
  11. p1.sayHello();
  12. var p2 = new Person('第二', 'aaaa', '3333');
  13. p2.sayHello();

定义在prototype中的成员是所有对象共享的,所以一般讲方法定义在prototype中,而属性定义在构造函数中。通过该属性可以实现js的继承。不要为内置对象随便添加新成员,防止混乱,可以对自定义对象通过该方法添加新成员。

原型对象中的成员是只读的,不可以第二次的改变这个值。若是添加了,只是为其对象自己添加了个属性,并不是其原型中的值发生了改变。利用引用类型来理解就好了。

Eg:利用原型给现有类型添加方法。

  1.  String.prototype.addwjx = function() {
  2.      return
    this + 'bbb';
  3.  };
  4.  var msg = 'aaaa';
  5. msg=msg.addwjx();
  6.  alert(msg);

6:js中的继承<原型继承>

Js中没有类的概念,继承是通过对象和对象来实现的。这里的对象是new之后的。通过原型来使不同的对象之间关联起来。

  1. <script type="text/javascript">
  2.     function Person(name,age) {
  3.         this.user_name = name;
  4.         this.user_age = age;
  5.         this.sayHello = function() {
  6.             alert('我叫'+this.user_name+',今年'+this.user_age);
  7.         };
  8.     };
  9.     function Student(name) {
  10.         this.ahui_name = name;
  11.     };
  12.     var person = new Person('阿辉', '23');
  13.     Student.prototype = person; //这里实现了继承,通过原型来使对象和对象之间连接起来。
  14.     var s1 = new Student('小辉');
  15.     s1.user_name = '阿辉+';
  16.     s1.user_age = '23+';
  17.     s1.sayHello();
  18. </script>

 

JavaScript基础—插曲02的更多相关文章

  1. JavaScript基础第02天笔记

    JavaScript基础第02天 1 - 运算符(操作符) 1.1 运算符的分类 运算符(operator)也被称为操作符,是用于实现赋值.比较和执行算数运算等功能的符号. JavaScript中常用 ...

  2. JavaScript基础插曲-练习

    Javascript基础学习 eg:利用正则表达式来去掉空格. 1:msg=' Hello ': <script type="text/javascript">     ...

  3. JavaScript基础插曲—元素样式,正则表达式,全局模式,提取数组

    JavaScript基础学习 学习js的基础很重要,可以让自己有更多的技能.我相信这个以后就会用到. Eg:点击选择框,在div中显示出选择的数量 window.onload = function() ...

  4. JavaScript基础—插曲

    Javascript基础 1:js中我们最好使用单引号,其实可以使用双引号的但是为了区别所以js中全部使用单引号.注释和C#的是一样的.网页里面的执行顺序是从上到下依次执行的,不管你js放到哪里,都会 ...

  5. JavaScript基础插曲---apply,call和URL编码等方法

    Js基础学习 Js的压缩: 就是利用js的语法格式通过缩短变量名,去掉空格等来进行压缩. Apply和call的使用 1:apply方法:应用某一对象的方法,用于一个对象替换当前对象.主要是改变thi ...

  6. JavaScript基础插曲—获取标签,插入元素,操作样式

    Js基础 1:document.write() 这个是动态创建元素内容,利用js.这个可以利用js来创建元素,文本,标签等,document.write()与document.writeln()的区别 ...

  7. JavaScript基础精华02(函数声明,arguments对象,匿名函数,JS面向对象基础)

    函数声明 JavaScript中声明函数的方式:(无需声明返回值类型) function add(i1, i2) {             return i1 + i2;//如果不写return返回 ...

  8. JavaScript基本入门02

    目录 JavaScript基础入门 02 条件语句 if 语句 if .. else 语句 switch 结构 循环语句 while 循环 continue 关键字 do...while语句 for ...

  9. JavaScript基础语法资料

    JavaScript基础第01天 1 - 编程语言 1.1 编程 编程: 就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程. 计算机程序: 就是计算机所执行的一系列的 ...

随机推荐

  1. 接口分离原则(Interface Segregation Principle)

    接口分离原则(Interface Segregation Principle)用于处理胖接口(fat interface)所带来的问题.如果类的接口定义暴露了过多的行为,则说明这个类的接口定义内聚程度 ...

  2. Spring AOP简述

    使用面想对象(Object-Oriented Programming,OOP)包含一些弊端,当需要为多个不具有继承关系的对象引入公共行为时,例如日志,安全检测等.我们只有在每个对象中引入公共行为,这样 ...

  3. WPF 编辑状态切换

    有时候DataGrid编辑的时候一个属性需要根据别的属性呈现不同的编辑状态.这就需要一个做一个状态切换.比如地址是1的时候,读写类型是读写.只读.只写.地址是2的时候,就只读.状态栏切换为TextBo ...

  4. 赴美工作常识(Part 4 - 面试)

    最近跟同事讨论面试的事情比较多,所以就综合大家所说的列举几条面试建议吧.这些建议是针对中国候选人应聘美国职位而写的,但适用范围可能更广.假若你实际的实力是 X,面试官感知到你的实力是 Y,这些建议既不 ...

  5. 在ThoughtWorks工作这几年我学到了什么?

    不知不觉,从2012年5月1日加入ThoughtWorks到现在,已经3年有余了.时间过得很快,这三年多我干了很多事情,但仔细想想也没有什么特别值得一提的.在一个公司呆久了总觉得很多事情是理所当然的, ...

  6. NanoProfiler - 适合生产环境的性能监控类库 之 大数据篇

    上期回顾 上一期:NanoProfiler - 适合生产环境的性能监控类库 之 基本功能篇 上次介绍了NanoProfiler的基本功能,提到,NanoProfiler实现了MiniProfiler欠 ...

  7. redis中使用java脚本实现分布式锁

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/115.html?1455860390 edis被大量用在分布式的环境中,自 ...

  8. JavaScript练习之for循环语句

    for循环四要素:初始条件.循环条件.循环体.状态改变. 1.for(var a=i;i<=aa;i++) { 循环体(例sum=sum+i  sum是输出的) } 例题 1-20关没关一分 2 ...

  9. 360路由器刷openwrt后设置wifi中继

    上一篇文章(360路由器刷openwrt.不死uboot.双系统 .wifi中继 - 飞鸿影~ - 博客园)讲了如何在360路由器C301上安装openwrt以及安装双系统.这篇文章讲如何设置无线中继 ...

  10. salesforce 零基础开发入门学习(七)PickList的value值获取

    之前介绍过PickList类型的声明以及赋值,但是如何取出呢?一个sObject对象可以理解为一条数据.通过sObject直接取恐怕很难做到,因为他只会显示一个值.这时候就要用到Schema命名空间中 ...