javascript读书笔记

《悟透javascript》  PDF下载链接

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
    <script type="text/javascript">
    function Person(name)
    {
      this.name = name; //设置对象属性,每个对象各自一份属性数据
    };
    
    Person.prototype.sayHello = function() //给Person 函数的prototype 添加sayHello 方法
    {
       alert("Hello, I'am " + this.name);
    };
    
    // 构造函数的prototype 上定义的方法确实可以通过对象直接调用到,而且代码是共享的,显然
    // 把方法设置到prototype 的写法显得优雅得多,尽管调用形式没有改变,但是逻辑上体现了方法与类的关系
    // 相比前面的写法,更容易理解和组织代码
    var BillGates = new Person("BillGates"); //创建BillGates 对象
    var SteveJobs = new Person("Steve Jobs"); //创建SteveJobs 对象
    
    BillGates.sayHello();
    SteveJobs.sayHello();
    
    // 因为两个对象是共享的prototype 的sayHello
    alert(BillGates.sayHello() == SteveJobs.sayHello());
    </script>
  </head>
  
  <body>
    了解javascript 原型:
    prototype 源自于法语, 软件界标准翻译为"原型", 代表事物的初始状态,也含有模型和样板的意义,javascript 中的
    prototype 概念恰如其分地反映了这个词的含义, 我们不能将其理解为C++ 的prototype 那种预先声明的概念.
    
    javascript 的所有function 类型的对象都有一个prototype 属性,这个prototype 属性本身又是一个 Object类型的对象
    因此我们也可以给这个prototype 对象添加任意的属性和方法, 既然prototype 是对象的原型,那么由该函数构造出来的
    对象应该都会具有原型的特征,事实上,在构造函数的prototype 上定义的所有属性和方法, 都是可以通过其构造的对象直接
    访问和调用的,也可以这么说,prototype 提供了一群同类对象共享属性和方法的机制;
  </body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'prototype2.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
    <script type="text/javascript">
    function Person(name) //基类构造函数
    {
       this.name = name;
    };
    
    Person.prototype.sayHello = function() //给基类构造函数的prototype 添加方法
    {
      alert("hello, I am " + this.name);
    };
    
    function Employee(name, salary) //子类构造函数
    {
      Person.call(this, name);
      this.salary = salary;
    };
    
    Employee.prototype = new Person(); //建一个基类的对象作为子类原型的原型
    
    Employee.prototype.showMeMoney = function()
    {
        alert(this.name + " $ " + this.salary);
    
    };
    
    var BillGates = new Person("BillGates");
    var SteveJobs = new Employee("SteveJobs",1234);
    
    BillGates.sayHello();
    SteveJobs.sayHello();
    
    SteveJobs.showMeMoney();
    </script>
  </head>
  
  <body>
    在 javascript中, prototype 不但能让对象共享自己的财富,而且prototype 还有寻根问祖的天性,从而使得先辈们的
    遗产可以代代相传,当从一个对象那里读取属性或调用方法的时候,如果该对象自身不存在这样的属性或方法,就会去自己
    关联的prototype 对象那里寻找,如果prototype没有,又会从prototype 自己关联的前辈prototype 那里去寻找,直到
    找到或追溯过程结束为止;
    
    在javascript 内部,对象的属性和方法追溯机制是通过所谓的prototype 原型链来实现的,当用new 操作符构造对象时候,
    也会同时将构造函数的prototype 对象指派给新创建的对象,成为该对象内置的原型对象,对象内置的原型对象应该是对外
    不可见的,尽管有些浏览器可以让我们访问这个内置原型对象,但是并不建议这样做,内置的原型对象本身也是对象,内置的
    原型对象本身也是对象,也有自己关联的原型对象,这样就形成了所谓的原型链
    
    在原型链的最末端,就是Object 构造函数 prototype属性指向的那一个原型对象,这个原型对象是所有对象的最老祖先,
    这个老祖宗实现了诸如:toString 等所有对象天生就该具有的方法,其它内置构造函数如:function,boolean,string,date
    和RegExp 等的prototype 都是这个老祖宗传承下来的,但是他们各自又定义了自身的属性和方法,从而他们的子孙就表现
    出各自宗族的那些特征;
  </body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'prototype3.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	"原型继承"是慈祥而又严厉,原型对象将自己的属性和方法无私地贡献给孩子们使用,也并不强迫孩子们必须遵从
	允许一些顽皮孩子按自己的兴趣和爱好独立行事,从这点上看,原型对象是一位慈祥的母亲,然而,任何一个孩子虽然
	可以我行我素,但却不能对原型对象的既有财产,因为那可能会影响到其它孩子的利益,从这一点上看,原型对象又像
	一位严厉的父亲
	-->
   <script type="text/javascript">
   function Person(name)
   {
     this.name = name;
   };
   
   Person.prototype.company = "Microsoft"; // 原型的属性
   
   Person.prototype.sayHello = function() // 原型的方法
   {
       alert("hello, I am " + this.name + " of " + this.company);   
   };
   
   var BillGates = new Person("Bill Gates");
   BillGates.sayHello(); //由于继承了原型的东西
   
   var SteveJobs = new Person("Steve_Jobs");
   SteveJobs.company = "Apple"; //设置了自己的company 属性,掩盖了原型company 属性
   SteveJobs.sayHello = function() //实现了自己的sayHello 方法,掩盖了原型的sayHello 方法
   {
      alert("Hi, " + this.name + " like " + this.company );
   };
   
    SteveJobs.sayHello();
    BillGates.sayHello();
   </script>
  </head>
  
  <body>
    
  </body>
</html>

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'prototype4.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	相比静态对象语言更神奇的是,我们可以随时给原型对象动态添加新的属性和方法,从而动态地扩展
	基类的功能特征,这在静态语言中是很难想象的:
	-->
   <script type="text/javascript">
   function Person(name)
   {
     this.name = name;
   };
   
   Person.prototype.sayHello = function() //建立对象之前定义的方法
   {
      alert("hello, I am " + this.name);
   };
   
   var BillGates = new Person("BillGates"); //建立对象
   BillGates.sayHello();
   
   Person.prototype.Retire = function() //建立对象后再动态扩展原型的方法
   {
      alert("poor" + this.name + ", byebye");
   };
   BillGates.Retire(); //动态扩展的方法即可以被先前建立的对象立即调用
   
   // 如果在javascript 内置的那些如Object 和function 等函数的prototype上添加些新的方法和属性
   // 就能扩展javascript 的功能了
   
   // Microsoftajax.debug.js
   // 给内置String 函数的prototype 扩展了一个trim 方法,于是所有的String 类对象都有了trim 方法
   String.prototype.trim = function String$trim()
   {
       if(arguments.length != 0) throw Error.parameterCount();
       return this.replace(/^\s+|\s+$/g, '');
   };
   </script>
  </head>
  
  <body>
  
  </body>
</html>   

myItEye

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.m或d论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 、1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值