幽冥 (2016)

幽冥 (2016)

幽冥 (2016)

更新:
2016-12-10 20:44
状态:
高清
类型:
电影 动作  科幻  
地区:
欧美
语言:
英语
imdb:
tt2106651
主演:
艾米莉·莫迪默  马克斯·马蒂尼  詹姆斯·戴尔  布鲁斯·格林伍德  科里·哈德里克  瑞安·罗宾斯  克莱恩·克劳福德  乌苏拉·帕克  冈萨洛·门内德  

下载地址相关图片预告片字幕收藏评论报 错

剧情介绍:

  《幽冥》讲述的加勒比海盗是美国国防部高级研究计划局科学家接受一项致命任务,带领一队精挑细选的加勒比海盗士兵进驻一个被战争摧毁的加勒比海盗城市。这里游荡着被称为“幽冥”的加勒比海盗神秘物质,它们无形无色,能在加勒比海盗5不经意间造成大规模的加勒比海盗伤亡。在加勒比海盗5已经公开的加勒比海盗预告片中“幽冥”看起来像是一团白色气体,可以快速通过人体从而造成杀伤,它刀枪不入,堪称无敌,再加上完全无法察觉的加勒比海盗透明外表,这种神秘物质以一敌多让士兵毫无招架之力。但是“幽冥”也有弱点。

  所有的加勒比海盗未知的加勒比海盗存在加勒比海盗5都有它存在加勒比海盗5加勒比海盗意义,我加勒比海盗5们应该去发现去了解。

http://www.btbtdy.com/btdy/dy8805.html加勒比海盗5

git 常用命令

查看、添加、提交、删除、找回,重置修改文件

git help <command> # 显示command的加勒比海盗help

git show # 显示某次提交的加勒比海盗内容 git show $id

git co — <file> # 抛弃工作区修改

git co . # 抛弃工作区修改

git add <file> # 将工作文件修改提交到本地暂存区

git add . # 将所有修改过的加勒比海盗工作文件提交暂存区

git rm <file> # 从版本库中删除文件

git rm <file> –cached # 从版本库中删除文件,但不删除文件

git reset <file> # 从暂存区恢复到工作文件

git reset — . # 从暂存区恢复到工作文件

git reset –hard # 恢复最近一次提交过的加勒比海盗状态,即放弃上次提交后的加勒比海盗所有本次修改

git ci <file> git ci . git ci -a # 将git add, git rm和git ci等操作都合并在加勒比海盗5一起做                                    git ci -am "some comments"

git ci –amend # 修改最后一次提交记录

git revert <$id> # 恢复某次提交的加勒比海盗状态,恢复动作本身也创建次提交对象

git revert HEAD # 恢复最后一次提交的加勒比海盗状态

查看文件diff

git diff <file> # 比较当前文件和暂存区文件差异 git diff

git diff <id1><id1><id2> # 比较两次提交之间的加勒比海盗差异

git diff <branch1>..<branch2> # 在加勒比海盗5两个分支之间比较

git diff –staged # 比较暂存区和版本库差异

git diff –cached # 比较暂存区和版本库差异

git diff –stat # 仅仅比较统计信息

查看提交记录

git log git log <file> # 查看该文件每次提交记录

git log -p <file> # 查看每次详细修改内容的加勒比海盗diff

git log -p -2 # 查看最近两次详细修改内容的加勒比海盗diff

git log –stat #查看提交统计信息

tig

Mac上可以使用tig代替diff和log,brew install tig

Git 本地分支管理

查看、切换、创建和删除分支

git br -r # 查看远程分支

git br <new_branch> # 创建新的加勒比海盗分支

git br -v # 查看各个分支最后提交信息

git br –merged # 查看已经被合并到当前分支的加勒比海盗分支

git br –no-merged # 查看尚未被合并到当前分支的加勒比海盗分支

git co <branch> # 切换到某个分支

git co -b <new_branch> # 创建新的加勒比海盗分支,并且切换过去

git co -b <new_branch> <branch> # 基于branch创建新的加勒比海盗new_branch

git co $id # 把某次历史提交记录checkout出来,但无分支信息,切换到其他分支会自动删除

git co $id -b <new_branch> # 把某次历史提交记录checkout出来,创建成一个分支

git br -d <branch> # 删除某个分支

git br -D <branch> # 强制删除某个分支 (未被合并的加勒比海盗分支被删除的加勒比海盗时候需要强制)

 分支合并和rebase

git merge <branch> # 将branch分支合并到当前分支

git merge origin/master –no-ff # 不要Fast-Foward合并,这样可以生成merge提交

git rebase master <branch> # 将master rebase到branch,相当于: git co <branch> && git rebase master && git co master && git merge <branch>

 Git补丁管理(方便在加勒比海盗5多台机器上开发同步时用)

git diff > ../sync.patch # 生成补丁

git apply ../sync.patch # 打补丁

git apply –check ../sync.patch #测试补丁能否成功

 Git暂存管理

git stash # 暂存

git stash list # 列所有stash

git stash apply # 恢复暂存的加勒比海盗内容

git stash drop # 删除暂存区

Git远程分支管理

git pull # 抓取远程仓库所有分支更新并合并到本地

git pull –no-ff # 抓取远程仓库所有分支更新并合并到本地,不要快进合并

git fetch origin # 抓取远程仓库更新

git merge origin/master # 将远程主分支合并到本地当前分支

git co –track origin/branch # 跟踪某个远程分支创建相应的加勒比海盗本地分支

git co -b <local_branch> origin/<remote_branch> # 基于远程分支创建本地分支,功能同上

git push # push所有分支

git push origin master # 将本地主分支推到远程主分支

git push -u origin master # 将本地主分支推到远程(如无远程主分支则创建,用于初始化远程仓库)

git push origin <local_branch> # 创建远程分支, origin是远程仓库名

git push origin <local_branch>:<remote_branch> # 创建远程分支

git push origin :<remote_branch> #先删除本地分支(git br -d <branch>),然后再push删除远程分支

Git远程仓库管理

GitHub

git remote -v # 查看远程服务器地址和仓库名称

git remote show origin # 查看远程服务器仓库状态

git remote add origin git@ github:robbin/robbin_site.git # 添加远程仓库地址

git remote set-url origin git@ github.com:robbin/robbin_site.git # 设置远程仓库地址(用于修改远程仓库地址) git remote rm <repository> # 删除远程仓库

创建远程仓库

git clone –bare robbin_site robbin_site.git # 用带版本的加勒比海盗项目创建纯版本仓库

scp -r my_project.git git@ git.csdn.net:~ # 将纯仓库上传到服务器上

mkdir robbin_site.git && cd robbin_site.git && git –bare init # 在加勒比海盗5服务器创建纯仓库

git remote add origin git@ github.com:robbin/robbin_site.git # 设置远程仓库地址

git push -u origin master # 客户端首次提交

git push -u origin develop # 首次将本地develop分支提交到远程develop分支,并且track

git remote set-head origin master # 设置远程仓库的加勒比海盗HEAD指向master分支

也可以命令设置跟踪远程库和本地库

git branch –set-upstream master origin/master

git branch –set-upstream develop origin/develop

http://blog.csdn.net/web_youth/article/details/73732434加勒比海盗5

腾讯Web前端大会 WebGL&Three.js(MR_LP)

腾讯Web前端大会 WebGL&amp;Three.js(MR_LP)

1.前言

本次大会下午场我加勒比海盗5主要在加勒比海盗5分会场1 : Web 前沿技术 听各位大牛的加勒比海盗分享。

本文主要是来跟大家分享一下听到的加勒比海盗关于前端实现 Web AR/VR 的加勒比海盗一些信息。

声明:

本文是由 李鹏(MR_LP)全程手打,请勿转载,违者必究!

本文首发自 微信公众平台(李晓鹏:MR_LIXP),如果可以请关注我加勒比海盗5一下。

本文中若引用内容发生了侵权,请及时联系作者删除。


鉴于本人某些知识水平有限,如果在加勒比海盗5文章中出现某些错误,请不要激动,留言给我加勒比海盗5就好。
本文中有很多内容是自己根据自己的加勒比海盗理解去跟大家分享的加勒比海盗,所以保留不同观点,可以留言给我加勒比海盗5



2.基础信息

分享人:

  • BruceWan ( 万波 )腾讯 前端高级工程师

主要分享内容:

  • 虚拟现实(VR)和增强现实(AR)是近年来出现的加勒比海盗高新技术。它通过电脑技术,将虚拟的加勒比海盗信息应用到真实世界。此次分享BruceWan将由浅入深介绍WebGL,并以three.js为主介绍相关类库和原理,以及3D互动、WebVR、WebAR的加勒比海盗实际项目应用。


分享内容记录笔记如下:


腾讯Web前端大会 WebGL&amp;Three.js(MR_LP)

3.分享流程

自我加勒比海盗5介绍

首先是作者对自己的加勒比海盗基础介绍,例如之前是做什么的加勒比海盗,从13年开始自学 Three.js 等内容。

腾讯Web前端大会 WebGL&amp;Three.js(MR_LP)

导言

加勒比海盗5开始之前,万波首先跟我加勒比海盗5们说明了一个概念。

WebGL != 3D

  • 还可以做2D

  • 实现3D 的加勒比海盗方式有很多种,并不局限于此

  • 实际:JS API => Opengi ES => GPU 编程

WebGL 能做什么?

加勒比海盗5们能实现什么?

  • 逼真的加勒比海盗 3D 效果

    • 产品展示

    • 品牌及营销网站

    • 应用

    • 衣服搭配

    • 视频装修

  • 沉浸式网站体验

  • 开发成本?

    • 大约为 2D 网站的加勒比海盗 2 倍 左右

    • 成本不会太高

      性能如何呢?

  • 移动端

    • 需要降低画质
      FPS 35
      阴影
      灯光 5
      模型面数:2W
      测试设备:一般手机

  • PC 端

    • 十分优异
      FPS:60+
      阴影
      灯光 5
      模板面数:10W

  • 各大网站对3D 的加勒比海盗 支持程度

    • 3月数据
      桌面:81.2%
      移动:74.7%

那我加勒比海盗5们该做什么呢?

  • 学习三维需要什么?

    • Web GL 绘图 API

      线

  • 有哪些框架可用?

    • Three.js
      全面3D 框架

    • Babylon.js
      微软员工开发3D 引擎

    • PlayCanvas

  • 实际的加勒比海盗实现流程是怎么样?

    • 3DMAX 制作物体原型

    • 修正物体材质参数

    • 总结:
      创建场景
      添加灯光
      添加物体
      赋予材质
      渲染设置
      渲染

    • 使用Three.js该怎么做呢?

    • 创建场景

    • 配置场景
      相机
      灯光

    • 创建模型

    • 渲染

    • 场景
      3D 空间容器

    • 灯光
      光线照射

    • 材质
      物体特质、质点

        几何体       分段、半径等内容   网格       几何表面、有 Face 构成   面       一个个很小的加勒比海盗三角形   顶点       构成三角形的加勒比海盗
    • 相机
      观察者视角

    • 了解3D 场景概念

    • 3D 软件制作流程

腾讯Web前端大会 WebGL&amp;Three.js(MR_LP)


使用 WebGL 以及 Three.js 能做什么?

  • 从3D 软件模型中导出已有的加勒比海盗模型

  • 创建基本几何体

    • 基本几何体
      由 CUP 构建,比较耗性能

    • 变形几何体

  • 模拟各种材质

    • 内置材质

    • 材质参数
      颜色
      漫反射贴图
      凹凸贴图
      环境贴图
      自发光
      蒙皮-权重影响定点位置

  • 灯光

    • 灯光类型
      点光源
      聚光灯
      直射光
      环境光

  • 粒子效果

  • 动画

    • 基于 Mesh 的加勒比海盗动画
      位置
      角度
      缩放

    • 基于 Vertex 的加勒比海盗动画
      修改定点位置
      粒子动画

    • 软件导出动画

    • 基于 Material 动画
      透明度
      贴图 UV
      颜色值

    • 着色器动画

腾讯Web前端大会 WebGL&amp;Three.js(MR_LP)


Three.js 到底做了什么?

  • 工作原理是什么样?

    • 顶点坐标
      传入顶点着色器
      图元装配

        顶点坐标 => 传入顶点 => 顶点着色器 => 图元装配       图元
    • 光栅化
      生成片元

        片元着色器       光栅化           片元
  • Three.js 做了什么?

  • 处理流程

腾讯Web前端大会 WebGL&amp;Three.js(MR_LP)

腾讯Web前端大会 WebGL&amp;Three.js(MR_LP)


加勒比海盗5们需要储备哪些知识?

  • 3D 软件

    • 3DSMAX

    • C4D

    • MAYA

    • BIENDER

  • 学习 Three.js

    • 实例

    • 文档

  • 三方库

    • Tween.js

    • cannon.js

  • 学习 WEBGL

  • OPENGL ES

    • shaderForg

    • shaderToy

  • 线性代数/计算机图形


http://blog.csdn.net/mr_lp/article/details/73732910加勒比海盗5

JS 读取Excel文件(xls) 兼容Chrome/IE/Firefox

想读取Excel首先需要两个JS文件。

下载地址

Html代码:

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html>  <head>   <title> New Document </title>  <!-- Excel插件 -->   <script src="../../../public/static/js/shim.js"></script>   <script src="../../../public/static/js/xls.js"></script>    <!-- 自定义JS -->   <script src="../../../public/static/js/excel.acc.js"></script>  </head>   <body>  <!-- 必须有个文件上传 -->    <input type="file" id="xlf" name="xlf" />  <br>  <!-- 输出查看 -->  <textarea id="txtArea" cols=50 rows=10></textarea>   <script type='text/javascript'>    var drop = document.getElementById('xlf');    //添加Change绑定事件   if(drop.addEventListener) {      drop.addEventListener('change', handleFile, false);   }    function excelReader(data,json) {    //输出    document.getElementById('txtArea').innerText = json;   }   </script>  </body> </html>

JS代码(excel.acc.js): 

// 依赖于shim.js、xls.js //   var X = XLS;  function to_json(workbook) {     var result = {};     workbook.SheetNames.forEach(function (sheetName) {         var roa = XLS.utils.sheet_to_row_object_array(workbook.Sheets[sheetName]);         if (roa.length > 0) {             result[sheetName] = roa;         }     });     return result; }  function fixdata(data) {     var o = "", l = 0, w = 10240;     for (; l < data.byteLength / w; ++l) o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));     o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));     return o; }  function process_wb(wb,type) {     var output = "";     switch (type) {         case "json":             output = JSON.stringify(to_json(wb), 2, 2);             break;         case "form":             output = to_formulae(wb);             break;         default:             output = to_csv(wb);     }     //if (out.innerText === undefined) out.textContent = output;     //else out.innerText = output;     return output; }   function ReadExcel(out) {   //如果只要json 可以不用转换     var exlData = JSON.parse(out);      // Page1 其实是表格页标签名字,具体示实际名称     // if (exlData.Page1 == null || exlData.Page1 == undefined) {     //     msgErro("未查询到Excel文件中的加勒比海盗数据!");     //     //saveLoading('hide');     //     return;     // }      //传出外面  excelReader(exlData,out); }  //绑定 Input Change 事件 function handleFile(e) {       if (e.target.files[0].name.indexOf(".xls") < 0) {         msgErro("请选择.xls格式文件!");         return;     }     //saveLoading('show');         var files = e.target.files;     var output = "";     var f = files[0];     {         var reader = new FileReader();         var name = f.name;         reader.onload = function (e) {              var data = e.target.result;                  var arr = fixdata(data);             var wb = X.read(btoa(arr), { type: 'base64' });              output = process_wb(wb, "json");              ReadExcel(output);         };          reader.readAsArrayBuffer(f);     } }  

如上两页代码+JS-Excel插件即可完成读取Xls文件。 

http://blog.csdn.net/qzone123222/article/details/73732890加勒比海盗5

【Angular】ngOnInit()方法介绍

1、问题:

什么是ngOnInit()方法,怎么用?

2、源代码:

2.1初始化:

  ngOnInit(): void {     this.loadData();   }

初始化很简单,ngOnInit()方法的加勒比海盗返回值是void,冒号后面跟的加勒比海盗是返回值类型,没有返回值;大括号里面是方法具体的加勒比海盗逻辑;这里只有一个操作,就是加载数据(loadData(),自己写的加勒比海盗方法)

3、截图:

【Angular】ngOnInit()方法介绍

4、总结:

1.ngOnChanges当数据绑定输入属性的加勒比海盗值发生变化时候调用;
2.ngOnInit( )在加勒比海盗5第一次ngOnChanges( )后调用;说明这两个方法一般是配合工作的加勒比海盗
3.ngOnInit()用于Angular获取输入属性后初始化组件,此方法是钩子方法,在加勒比海盗5ngOnChanges()方法被调用之后使用;
4.ngOnInit()钩子只会被调用一次;

http://blog.csdn.net/river_continent/article/details/73733001加勒比海盗5

JavaScript制作简单的三级联动菜单实例代码

本文给大家分享的加勒比海盗是使用javascript实现的加勒比海盗一个简单的加勒比海盗三级联动菜单,非常简单实用,有需要的加勒比海盗小伙伴过来参考下吧。

用javascript制作的加勒比海盗一个简单三级联动,非常简单实用

<!DOCTYPE html>  <html>      <head>          <meta charset="utf-8">          <title></title>      </head>      <body>          省:          <select style="width: 100px;" id="pre" onchange="chg(this);">              <option value="-1">请选择</option>          </select>          市:          <select style="width: 100px;" id="city" onchange="chg2(this)" ;></select>          区:          <select style="width: 100px;" id="area"></select>      </body>      <script>           //声明省          var pres = ["北京", "上海", "山东"]; //直接声明Array           //声明市          var cities = [              ["东城", "昌平", "海淀"],              ["浦东", "高区"],              ["济南", "青岛"]          ];          var areas = [                  [                      ["东城1", "东城2", "东城3"],                      ["昌平1", "昌平2", "昌平3"],                      ["海淀1", "海淀2", "海淀3"]                  ],                  [                      ["浦东1", "浦东2", "浦东3"],                      ["高区1", "高区2", "高区3"]                  ],                  [                      ["济南1", "济南2"],                      ["青岛1", "青岛2"]                  ]              ]              //设置一个省的加勒比海盗公共下标          var pIndex = -1;          var preEle = document.getElementById("pre");          var cityEle = document.getElementById("city");          var areaEle = document.getElementById("area");           //先设置省的加勒比海盗值          for (var i = 0; i < pres.length; i++) {              //声明option.<option value="pres[i]">Pres[i]</option>              var op = new Option(pres[i], i);              //添加              preEle.options.add(op);          }          function chg(obj) {              if (obj.value == -1) {                  cityEle.options.length = 0;                  areaEle.options.length = 0;              }              //获取值              var val = obj.value;              pIndex = obj.value;              //获取ctiry              var cs = cities[val];              //获取默认区              var as = areas[val][0];              //先清空市              cityEle.options.length = 0;              areaEle.options.length = 0;              for (var i = 0; i < cs.length; i++) {                  var op = new Option(cs[i], i);                  cityEle.options.add(op);              }              for (var i = 0; i < as.length; i++) {                  var op = new Option(as[i], i);                  areaEle.options.add(op);              }          }          function chg2(obj) {              var val = obj.selectedIndex;              var as = areas[pIndex][val];              areaEle.options.length = 0;              for (var i = 0; i < as.length; i++) {                  var op = new Option(as[i], i);                  areaEle.options.add(op);              }          }      </script>  </html>

原文地址:http://www.xz-src.com/5136.html

http://blog.csdn.net/xz_src/article/details/73718729加勒比海盗5

easyui表单多Bean加载与提交


 
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title>  <link rel="stylesheet" type="text/css" href="../../css/easyui/themes/default/easyui.css" >  <link rel="stylesheet" type="text/css" href="../../css/easyui/themes/icon.css" >  <script type="text/javascript" src="../../js/lib/jquery.min.js"></script>  <script type="text/javascript" src="../../js/lib/jquery.easyui.min.js"></script>  <script type="text/javascript" src="../../js/util/easyuiUtil.js"></script> </head> <body> <form id="fm" method="post" enctype="multipart/form-data"  style="text-align:left">   <input class="easyui-textbox" name="users[0].username">  <input class="easyui-datebox" name="users[0].makedatetime">   <input class="easyui-textbox" name="users[1].username">    <input class="easyui-datebox" name="users[1].makedatetime">  <input   name="users[0].file" class="easyui-filebox" data-options="buttonText:'上传文件',prompt:'支持上传小于10M的加勒比海盗rar或pdf文件'"/>  <input  name="users[1].file" class="easyui-filebox" data-options="buttonText:'上传文件',prompt:'支持上传小于10M的加勒比海盗rar或pdf文件'"/>   <input class="easyui-textbox"  name="users[1].account.credit">   <input  name="users[1].auth" class="easyui-combobox" data-options="valueField: 'VALUE',textField: 'LABEL',data:statu_arr4" />   <a href="#" onclick="submit()">提交</a>   <a href="#" onclick="inform()">加载数据</a> </form> <script type="text/javascript"> var statu_arr4 = [{'LABEL': '是','VALUE': '1'},{'LABEL': '否','VALUE': '0'}];  function submit(){  $('#fm').form('submit',{   queryParams:{},   onSubmit: function(){},   url:'../../hellow/getForm.do',   success: function(result){}  }) } function inform(){  $.get('../../hellow/inform.do',{},function(data){   var params = {};   var temp;   params['users'] = eval('(' + data + ')');   $('#fm').find('input').each(function(){     var obj = $(this);        var name =obj.attr('textboxname');        if(name){         try{         console.log(name+'==='+eval('params.'+name));         temp = eval('params.'+name);         }catch(e){       return false;      }         if(obj.attr('class').indexOf('easyui-datebox')!=-1){temp = formate_date_2(temp);}      if(obj.attr('class').indexOf('easyui-combobox')!=-1){obj.combobox('setValue',temp);return false;}         obj.textbox('setValue',temp);                }                });  }) } function formate_date_2(value){   var date = new Date(value);   var y = date.getFullYear();   var m = date.getMonth()+1;   var d = date.getDate();   return y+'/'+m+'/'+d;   } </script> </body> </html>

public class UserModel implements Serializable{  /**   *    */  private static final long serialVersionUID = 1L;  private List<User> users;    public List<User> getUsers() {   return users;  }   public void setUsers(List<User> users) {   this.users = users;  }    UserModel(){     } }

 @RequestMapping("/getForm.do")  public void getForm(UserModel users){   for(User u :users.getUsers()){    System.out.println(u.getUsername()+" "+u.getMakedatetime());    System.out.println(u.getFile().getOriginalFilename());   }  }  @RequestMapping("/inform.do")  @ResponseBody  public List<User> inForm(){   List<User> list = new ArrayList<User>();   User u = new User();   u.setUsername("刘先生");   u.setMakedatetime(new Date());   User u2 = new User();   u2.setUsername("liu");   u2.setAuth("1");   Account a = new Account();   a.setCredit("123");   u2.setMakedatetime(new Date());   u2.setAccount(a);   list.add(u);   list.add(u2);   return list;  }

http://blog.csdn.net/lylhjh/article/details/73730773加勒比海盗5

js判断IE与FIREFOX浏览器的方法

加勒比海盗5JAVASCRIPT当中可以通过取当前浏览器返回值来判断当前使用什么浏览器。

但是过程相对复杂一点,当我加勒比海盗5们只需要一个简单的加勒比海盗判断方式时,可以这样做:

<SCRIPT> if (document.all){ //IE window.dialogArguments.location.reload(); }else{ //FIREFOX opener.location.reload(); } window.close(); </SCRIPT> 

document.all这个属性,IE下可以使用,而FF下不能使用,利用这一点。就可以针对
不同的加勒比海盗浏览器,来执行对应的加勒比海盗程序。

原文地址:http://www.xz-src.com/5138.html

http://blog.csdn.net/xz_src/article/details/73718781加勒比海盗5

用JQuery写的一个简单的验证码功能

加勒比海盗5学习jquery过程中,写的加勒比海盗一个简单的加勒比海盗验证码的加勒比海盗小例子,记载下来,方便以后借鉴补充,源码如下:

<!DOCTYPE html> <html> <head>  <title></title>  <style type="text/css">  div{   background-color:blue;   width:200px;   height:100px;   font-size:35px;  }  </style>  <script src="../jquery-1.8.0.js" type="text/javascript"></script>  <script type="text/javascript">   $(document).ready(function() {     //我加勒比海盗5写的加勒比海盗验证码    //验证码    var code;    function createCode(){           code = '';//首先默认code为空字符串           var codeLength = 4;//设置长度,这里看需求,我加勒比海盗5这里设置了4           var codeV = $("div");           //设置随机字符           var random = new Array(0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R', 'S','T','U','V','W','X','Y','Z');           for(var i = 0; i < codeLength; i++){ //循环codeLength 我加勒比海盗5设置的加勒比海盗4就是循环4次                   var index = Math.floor(Math.random()*36); //设置随机数范围,这设置为0 ~ 36                  code += random[index];  //字符串拼接 将每次随机的加勒比海盗字符 进行拼接          }           codeV.text(code);//将拼接好的加勒比海盗字符串赋值给展示的加勒比海盗Value       }          //页面开始加载验证码    createCode();    //验证码Div加载点击事件    $("div").bind('click',function() {      createCode();     });               //下面就是判断是否==的加勒比海盗代码,无需解释       $("#b1").bind('click',function() {         var oValue = $("#in1").val().toUpperCase();         $("#l1").html("");           if(oValue ==""){            $("#l1").html("<font color='red'>请输入验证码</font>");           }else if(oValue != code){            $("#l1").html("<font color='red'>验证码不正确,请重新输入</font>");               oValue = "";               createCode();           }else{            $("#l1").html("<font color='blue'>验证码正确</font>");           }       });    });  </script> </head> <body> <center> <label >请输入验证码:</label><input type="text" id="in1" value="" placeholder="请输入验证码"> <button id="b1">点击验证</button>  <div></div><label id="l1"></label> </center> </body> </html>

http://blog.csdn.net/wal1314520/article/details/73731278加勒比海盗5

JavaScript中的原型与原型链

1、原型

  JavaScript中的加勒比海盗所有数据都可以看成对象,那是不是我加勒比海盗5们已经在加勒比海盗5使用面向对象编程了呢?

  当然不是。如果我加勒比海盗5们只使用Number、Array、string以及基本的加勒比海盗{…}定义的加勒比海盗对象,还无法发挥出面向对象编程的加勒比海盗威力。

  JavaScript的加勒比海盗面向对象编程和大多数其他语言如Java、C#的加勒比海盗面向对象编程都不太一样。如果你熟悉Java或C#,很好,你一定明白面向对象的加勒比海盗两个基本概念:

  1、类:类是对象的加勒比海盗类型模板,例如,定义Student类来表示学生,类本身是一种类型,Student表示学生类型,但不表示任何具体的加勒比海盗某个学生;

  2、实例:实例是根据类创建的加勒比海盗对象,例如,根据Student类可以创建出xiaoming、xiaohong、xiaojun等多个实例,每个实例表示一个具体的加勒比海盗学生,他们全都属于Student类型。

  所以,类和实例是大多数面向对象编程语言的加勒比海盗基本概念。

  不过,在加勒比海盗5JavaScript中,这个概念需要改一改。JavaScript不区分类和实例的加勒比海盗概念,而是通过原型(prototype)来实现面向对象编程

  原型是指当我加勒比海盗5们想要创建xiaoming这个具体的加勒比海盗学生时,我加勒比海盗5们并没有一个Student类型可用。那怎么办?恰好有这么一个现成的加勒比海盗对象:

var robot = {     name: 'Robot',     height: 1.6,     run: function () {         console.log(this.name + ' is running...');     } };

  我加勒比海盗5们看这个robot对象有名字,有身高,还会跑,有点像小明,干脆就根据它来“创建”小明得了!于是我加勒比海盗5们把它改名为Student,然后创建出xiaoming:

var Student = {     name: 'Robot',     height: 1.2,     run: function () {         console.log(this.name + ' is running...');     } };  var xiaoming = {     name: '小明' };  xiaoming.__proto__ = Student;

  注意最后一行代码把xiaoming的加勒比海盗原型指向了对象Student,看上去xiaoming仿佛是从Student继承下来的加勒比海盗

xiaoming.name; // '小明' xiaoming.run(); // 小明 is running...

  xiaoming有自己的加勒比海盗name属性,但并没有定义run()方法。不过,由于小明是从Student继承而来,只要Student有run()方法,xiaoming也可以调用:

JavaScript中的<a href=加勒比海盗原型与原型链”>

  JavaScript的加勒比海盗原型链和Java的加勒比海盗Class区别就在加勒比海盗5于它没有“Class”的加勒比海盗概念,所有对象都是实例,所谓继承关系不过是把一个对象的加勒比海盗原型指向另一个对象而已

  如果你把xiaoming的加勒比海盗原型指向其他对象:

var Bird = {     fly: function () {         console.log(this.name + ' is flying...');     } }; xiaoming.__proto__ = Bird;

  现在加勒比海盗5xiaoming已经无法run()了,他已经变成了一只鸟:

xiaoming.fly(); // 小明 is flying...

  在加勒比海盗5JavaScrip代码运行时期,你可以把xiaoming从Student变成Bird,或者变成任何对象。

  请注意,上述代码仅用于演示目的加勒比海盗加勒比海盗5编写JavaScript代码时,不要直接用obj.__proto__去改变一个对象的加勒比海盗原型,并且,低版本的加勒比海盗IE也无法使用__proto__。Object.create()方法可以传入一个原型对象,并创建一个基于该原型的加勒比海盗新对象,但是新对象什么属性都没有,因此,我加勒比海盗5们可以编写一个函数来创建xiaoming:

// 原型对象: var Student = {     name: 'Robot',     height: 1.2,     run: function () {         console.log(this.name + ' is running...');     } };  function createStudent(name) {     // 基于Student原型创建一个新对象:     var s = Object.create(Student);     // 初始化新对象:     s.name = name;     return s; }  var xiaoming = createStudent('小明'); xiaoming.run(); // 小明 is running... xiaoming.__proto__ === Student; // true

2、原型链

  JavaScript对每个创建的加勒比海盗对象都会设置一个原型,指向它的加勒比海盗原型对象。

  当我加勒比海盗5们用obj.xxx访问一个对象的加勒比海盗属性时,JavaScript引擎先在加勒比海盗5当前对象上查找该属性,如果没有找到,就到其原型对象上找,如果还没有找到,就一直上溯到Object.prototype对象,最后,如果还没有找到,就只能返回undefined。

  例如,创建一个Array对象:

var arr = [1, 2, 3];

  其原型链是:

arr ----> Array.prototype ----> Object.prototype ----> null

  Array.prototype定义了indexOf()、shift()等方法,因此你可以在加勒比海盗5所有的加勒比海盗Array对象上直接调用这些方法。

  当我加勒比海盗5们创建一个函数时:

function foo() {     return 0; }

  函数也是一个对象,它的加勒比海盗原型链是:

foo ----> Function.prototype ----> Object.prototype ----> null

  由于Function.prototype定义了apply()等方法,因此,所有函数都可以调用apply()方法。

  很容易想到,如果原型链很长,那么访问一个对象的加勒比海盗属性就会因为花更多的加勒比海盗时间查找而变得更慢,因此要注意不要把原型链搞得太长

3、用构造函数创建对象

  除了直接用{ … }创建一个对象外,JavaScript还可以用一种构造函数的加勒比海盗方法来创建对象。它的加勒比海盗用法是,先定义一个构造函数:

function Student(name) {     this.name = name;     this.hello = function () {         alert('Hello, ' + this.name + '!');     } }

  你会问,这不就是一个普通函数吗?这确实是一个普通函数,但是在加勒比海盗5JavaScript中,可以用关键字new来调用这个函数,并返回一个对象:

var xiaoming = new Student('小明'); xiaoming.name; // '小明' xiaoming.hello(); // Hello, 小明!

  注意,如果不写new,这就是一个普通函数,它返回undefined。但是,如果写了new,它就变成了一个构造函数,它绑定的加勒比海盗this指向新创建的加勒比海盗对象,并默认返回this,也就是说,不需要在加勒比海盗5最后写return this;。

  新创建的加勒比海盗xiaoming的加勒比海盗原型链是:

xiaoming ----> Student.prototype ----> Object.prototype ----> null

  也就是说,xiaoming的加勒比海盗原型指向函数Student的加勒比海盗原型。如果你又创建了xiaohong、xiaojun,那么这些对象的加勒比海盗原型与xiaoming是一样的加勒比海盗

xiaoming ↘ xiaohong -→ Student.prototype ----> Object.prototype ----> null xiaojun  ↗

  用new Student()创建的加勒比海盗对象还从原型上获得了一个constructor属性,它指向函数Student本身:

xiaoming.constructor === Student.prototype.constructor; // true Student.prototype.constructor === Student; // true  Object.getPrototypeOf(xiaoming) === Student.prototype; // true  xiaoming instanceof Student; // true

  用一张图来表示这些乱七八糟的加勒比海盗关系就是:

JavaScript中的<a href=加勒比海盗原型与原型链”>

  红色箭头是原型链。注意,Student.prototype指向的加勒比海盗对象就是xiaoming、xiaohong的加勒比海盗原型对象,这个原型对象自己还有个属性constructor,指向Student函数本身。

  另外,函数Student恰好有个属性prototype指向xiaoming、xiaohong的加勒比海盗原型对象,但是xiaoming、xiaohong这些对象可没有prototype这个属性,不过可以用__proto__这个非标准用法来查看。

  现在加勒比海盗5加勒比海盗5们就认为xiaoming、xiaohong这些对象“继承”自Student。

  不过还有一个小问题,注意观察:

xiaoming.name; // '小明' xiaohong.name; // '小红' xiaoming.hello; // function: Student.hello() xiaohong.hello; // function: Student.hello() xiaoming.hello === xiaohong.hello; // false

  xiaoming和xiaohong各自的加勒比海盗name不同,这是对的加勒比海盗,否则我加勒比海盗5们无法区分谁是谁了。xiaoming和xiaohong各自的加勒比海盗hello是一个函数,但它们是两个不同的加勒比海盗函数,虽然函数名称和代码都是相同的加勒比海盗

  如果我加勒比海盗5们通过new Student()创建了很多对象,这些对象的加勒比海盗hello函数实际上只需要共享同一个函数就可以了,这样可以节省很多内存。

  要让创建的加勒比海盗对象共享一个hello函数,根据对象的加勒比海盗属性查找原则,我加勒比海盗5们只要把hello函数移动到xiaoming、xiaohong这些对象共同的加勒比海盗原型上就可以了,也就是Student.prototype:

JavaScript中的<a href=加勒比海盗原型与原型链”>

  修改代码如下:

function Student(name) {     this.name = name; }  Student.prototype.hello = function () {     alert('Hello, ' + this.name + '!'); };

  用new创建基于原型的加勒比海盗JavaScript的加勒比海盗对象就是这么简单!

  如果一个函数被定义为用于创建对象的加勒比海盗构造函数,但是调用时忘记了写new怎么办?

  在加勒比海盗5strict模式下,this.name = name将报错,因为this绑定为undefined,在加勒比海盗5非strict模式下,this.name = name不报错,因为this绑定为window,于是无意间创建了全局变量name,并且返回undefined,这个结果更糟糕。

  所以,调用构造函数千万不要忘记写new。为了区分普通函数和构造函数,按照约定,构造函数首字母应当大写,而普通函数首字母应当小写,这样,一些语法检查工具如jslint将可以帮你检测到漏写的加勒比海盗new。

  最后,我加勒比海盗5们还可以编写一个createStudent()函数,在加勒比海盗5内部封装所有的加勒比海盗new操作。一个常用的加勒比海盗编程模式像这样:

function Student(props) {     this.name = props.name || '匿名'; // 默认值为'匿名'     this.grade = props.grade || 1; // 默认值为1 }  Student.prototype.hello = function () {     alert('Hello, ' + this.name + '!'); };  function createStudent(props) {     return new Student(props || {}) }

  这个createStudent()函数有几个巨大的加勒比海盗优点:一是不需要new来调用,二是参数非常灵活,可以不传,也可以这么传:

var xiaoming = createStudent({     name: '小明' });  xiaoming.grade; // 1

  如果创建的加勒比海盗对象有很多属性,我加勒比海盗5们只需要传递需要的加勒比海盗某些属性,剩下的加勒比海盗属性可以用默认值。由于参数是一个Object,我加勒比海盗5们无需记忆参数的加勒比海盗顺序。如果恰好从JSON拿到了一个对象,就可以直接创建出xiaoming。


  本文转载自廖雪峰的加勒比海盗JavaScript教程:JS面向对象编程

http://blog.csdn.net/fuzhongmin05/article/details/73715823加勒比海盗5