之前的几讲中我们曾经说过,JavaScript中是没有类的概念的。但是我们讲过对象,那么这个对象是怎么来的呢?

只要有函数即可创建对象

自定义对象

自定义对象的方式:

1. 使用无参的函数创建对象

<script type="text/javascript">
function Person(){} var p = new Person();
//直接调用对象向对象中插入元素
p.id = 123;
p.name = "大熊";
//插入方法元素时的操作
p.say = function(){
alert("我的名字叫做"+p.name);
}
document.write("编号:"+p.id + "姓名:"+p.name);
p.say(); </script>

如果再使用Person创建一个对象, 此时的对象不具备之前对象添加的元素。

2. 使用带参的函数创建对象

function Person(id,name){
this.id = id;
this.name = name;
this.say = function(){
alert(name+"666");
}
}

这种方式和java中的构造方法类似,很好学,对吧。

3. 使用Object函数创建对象

var p = new Object();
p.id = 123;
p.name = "大熊";

4. 使用字面量的方式创建

var p = {
id:123,
name:"大熊",
say:function(){
alert(this.name+"666");
}
}

prototype原型

现在我们有这样一个需求,我们想给Array对象添加一些新的方法,但是正常的思路就是自定义一个工具对象,调用的时候先新建一个工具对象,将数组作为参数传入方法。这样其实是很麻烦的,为了简化操作,我们就用到了原型,使得方法可以直接用数组对象调用。

那么,什么是prototype原型呢?prototype是函数(function)的一个必备属性(书面一点的说法是”保留属性”)(只要是function,就一定有一个prototype属性)

prototype的特性如下:

  • prototype的值是一个对象
  • 可以任意修改函数的prototype属性的值
  • 一个对象会自动拥有prototype的所有成员属性和方法

具体使用方法如下代码:

    Array.prototype.getMax = function(){
var max = this[0];
for(var index = 1; index<this.length ; index++){
if(this[index]>max){
max = this[index];
}
}
return max;
}
Array.prototype.searchEle = function(target){
for(var i = 0 ; i<this.length ; i++){
if(target==this[i]){
return i;
}
}
return -1;
}
//var arr = new Array(12,4,17,9);
var arr = [12,4,17,9];
var max = arr.getMax();
var index = arr.searchEle(9);
document.write("最大值:"+ max+"<br/>");
document.write("索引值:"+ index+"<br/>");

练习:给字符串对象添加一个toCharArray的方法,然后再添加一个reverse(翻转)的 方法

//先创建一个prototype对象(指向Object)
function String(){
this.prototype = new Object();
} //使用原型
String.prototype.toCharrArray = function(){
var arr = new Array();
for(var i=0;i<this.length;i++){
arr[i] = this.charAt(i);
}
return arr;
} String.prototype.reverse = function(){
var arr = this.toCharrArray();
arr.reverse();
return arr.join(",");
}

至此,JavaScript的基本语法所有内容介绍完毕。下面的几讲中我们将介绍其余两个部分的内容。

JavaScript学习总结(五)的更多相关文章

  1. JavaScript学习总结(五)——jQuery插件开发与发布

    jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...

  2. JavaScript学习总结(五)——Javascript中==和===的区别

    一.JavaScript"=="的作用 当==两边的内容是字符串时,则比较字符串的内容是否相等. 当==两边的内容是数字时,则比较数字的大小是否相等. 当==两边的内容是对象或者是 ...

  3. javascript学习第五课this、call、apply

    js函数与其它 高级语言相比有一个特点.没有返回值,一个简单函数就是function关键字+函数名字构成 this 对象是在运行中基于函数的执行环境绑定的,在全局函数中,this等于window,而当 ...

  4. JavaScript学习 - 基础(五) - string/array/function/windows对象

    String对象 更详细转:http://www.w3school.com.cn/jsref/jsref_obj_string.asp //------------------------------ ...

  5. JavaScript学习(五)

  6. arcgis api for javascript 学习(五) 实现地图绘制工具

    1.本文实现的功能为鼠标与地图之间的交互,能够在地图上绘制不同形状的图形 2.代码部分主要讲到的为Graphic函数的相关功能 <!DOCTYPE html> <html> & ...

  7. javascript学习笔记(四) Number 数字类型

    数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数  toExponential() 方法 用科学 ...

  8. JavaScript学习总结——转

    JavaScript学习总结(一)——JavaScript基础 JavaScript学习总结(二)——逻辑Not运算符详解 JavaScript学习总结(三)——逻辑And运算符详解 JavaScri ...

  9. JavaScript学习总结(2)——JavaScript数据类型判断

    最近做项目中遇到了一些关于javascript数据类型的判断处理,上网找了一下资料,并且亲自验证了各种数据类型的判断,在此做一个总结吧! 一.JS中的数据类型  1.数值型(Number):包括整数. ...

  10. 从零开始学习jQuery (五) 事件与事件对象

    本系列文章导航 从零开始学习jQuery (五) 事件与事件对象 一.摘要 事件是脚本编程的灵魂. 所以本章内容也是jQuery学习的重点. 本文将对jQuery中的事件处理以及事件对象进行详细的讲解 ...

随机推荐

  1. ThinkPHP 3.1 自定义标签

    \TagLib\TagLibTaoWan.class.php 标签存放目录以及命名规则! config.php 设置!

  2. 每天一点点之 uni-app 框架开发 - 页面滚动到指定位置

    项目需求:在页面中,不管位于何处,点击评论按钮页面滚动到对应到位置 实现思路如下: uni.createSelectorQuery().select(".comment").bou ...

  3. VS2012 ffmpeg 没有定义的lrint

    在common.h #ifndef AVUTIL_COMMON_H#define AVUTIL_COMMON_H下添加 #define lrint(f) (f>=0?(int32_t)(f+(d ...

  4. .Net 笔记

    1.介绍 .net一般指.Net Framework框架.一种平台,一种技术. C#是一种编程语言,可以开发基于.net平台的应用. .Net Framework是框架是.Net平台不可缺少的一部分, ...

  5. [LeetCode] 933. Number of Recent Calls 最近的调用次数

    Write a class RecentCounter to count recent requests. It has only one method: ping(int t), where t r ...

  6. [JZOJ]1293.气象牛[区间DP]

    Description 为了研究农场的气候,Betsy帮助农夫John做了N(1 <= N <= 100)次气压测量并按顺序记录了结果M_1-M_N(1 <= M_i <= 1 ...

  7. 报错盲注之exp注入(double数值类型溢出原理详解)

    首先感谢原文博主,在此致敬.本文转自:http://www.cnblogs.com/lcamry/articles/5509124.html Exp()为以 e 为底的对数函数:MySQL版本在 5. ...

  8. 六、React 键盘事件 表单事件 事件对象以及React中的ref获取dom节点 、React实现类似Vue的双向数据绑定

    接:https://www.cnblogs.com/chenxi188/p/11782349.html 事件对象 .键盘事件. 表单事件 .ref获取dom节点.React实现类似vue双向数据绑定 ...

  9. Spring 事件(2)- 自定义事件

    Spring 系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of ...

  10. html 基础 (9.19 第八天)

    一.HTML:超文本标记语言,是一种标签语言,不是编程语言,显示数据有双标签<body></body> 和单标签<img src=# / >, 标签大小写都可以通过 ...