JS克隆,属性,数组,对象,函数实例分析


Posted in Javascript onNovember 26, 2016

本文实例讲述了JS克隆,属性,数组,对象,函数。分享给大家供大家参考,具体如下:

<script type="text/javascript">
/* 克隆原型得到对象 */
function clone(object) {
  function F() {}
  F.prototype = object;
  return new F;
}
var Person = {
 name: 'default name',
 getName: function() {
  return this.name;
 }
};
var reader = clone(Person);
console.log(reader.getName()); // This will output 'default name'.
reader.name = 'John Smith';
console.log(reader.getName()); // This will now output 'John Smith'.
/* Author Prototype Object. */
var Author = clone(Person);
Author.books = []; // 书数组
Author.getBooks = function() {
 return this.books;
}
var author = [];
author[0] = clone(Author);
author[0].name = 'Dustin Diaz';
author[0].books = ['JavaScript Design Patterns'];
author[1] = clone(Author);
author[1].name = 'Ross Harmes';
author[1].books = ['JavaScript Design Patterns','PHP','Mysql'];
console.log(author[0].getName());
console.log(author[0].getBooks());
console.log(author[1].getName());
console.log(author[1].getBooks());
</script>

结果

JS克隆,属性,数组,对象,函数实例分析

这里的console.log很有意思,比alert有意思,alert不能获取全部数据,需要一个个弹出。

js的数组定义也很有意思。

进一步升级

<script type="text/javascript">
/* 克隆原型得到对象 */
function clone(object) {
  function F() {}
  F.prototype = object;
  return new F;
}
var Person = {
 name: 'default name',
 getName: function() {
  return this.name;
 }
};
var Author = clone(Person);
Author.books = []; // 书数组
Author.getBooks = function() {
 return this.books;
}
var authorClone = clone(Author);
console.log(authorClone.name); // string 'default name'.
authorClone.name = 'new name'; // 重新赋值
console.log(authorClone.name); // Now linked to the primative authorClone.name, which
// is the string 'new name'.
console.log(Author.getName()); // 没有改变,任然是 'default name'
console.log(Author.getBooks()); // 空的
authorClone.books.push('new book'); // Author被改了
authorClone.books.push('new new book'); // Author被改了
console.log(Author.getBooks()); // array 'new book'
console.log(authorClone.getBooks()); // array 'new book'
authorClone.books = []; // 定义了属于自己的books数组
authorClone.books.push('new book2'); // We are now modifying that new array.
authorClone.books.push('new book3');
authorClone.books.push('new book4');
console.log(authorClone.getBooks());
console.log(Author.getBooks());
var CompoundObject = {
 string1: 'default value',
 childObject: {
  bool: true,
  num: 10
 },
 getChild: function() { // 返回对象Object
  return this.childObject;
 }
}
var compoundObjectClone = clone(CompoundObject);
compoundObjectClone.childObject.num = 5; // 不好的方式
compoundObjectClone.childObject = { // 好一点的方式
 bool: true,
 num: 5
};
console.log(compoundObjectClone.getChild());
</script>

结果:

JS克隆,属性,数组,对象,函数实例分析

更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript中json操作技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
javascript获取鼠标点击元素对象(示例代码)
Dec 20 Javascript
jQuery拖拽插件gridster使用指南
Apr 21 Javascript
jquery实现的代替传统checkbox样式插件
Jun 19 Javascript
js传值后台中文出现乱码的解决方法
Jun 30 Javascript
jQuery 翻页组件yunm.pager.js实现div局部刷新的思路
Aug 11 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
Apr 23 Javascript
Vue 项目代理设置的优化
Apr 17 Javascript
微信小程序实现折叠展开效果
Jul 19 Javascript
原生js实现form表单序列化的方法
Aug 02 Javascript
JS实现随机生成10个手机号的方法示例
Dec 07 Javascript
移动端自适应flexible.js的使用方法(不用三大框架,仅写一个单html页面使用)推荐
Apr 02 Javascript
JS 逻辑判断不要只知道用 if-else 和 switch条件判断(小技巧)
May 27 Javascript
JS匿名函数类生成方式实例分析
Nov 26 #Javascript
正则表达式替换html元素属性的方法
Nov 26 #Javascript
js初始化验证实例详解
Nov 26 #Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
Nov 26 #Javascript
JS匿名函数实例分析
Nov 26 #Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
Nov 26 #Javascript
JS类的定义与使用方法深入探索
Nov 26 #Javascript
You might like
浅谈PHP语法(1)
2006/10/09 PHP
第七节--类的静态成员
2006/11/16 PHP
PHP的异常处理类Exception的使用及说明
2012/06/13 PHP
php+mysqli实现批量执行插入、更新及删除数据的方法
2015/01/29 PHP
PHP去除字符串最后一个字符的三种方法实例
2017/03/01 PHP
js中 关于undefined和null的区别介绍
2013/04/16 Javascript
jquery ui对话框实例代码
2013/05/10 Javascript
JavaScript中的函数重载深入理解
2014/08/04 Javascript
jquery实现通用的内容渐显Tab选项卡效果
2015/09/07 Javascript
基于jQuery实现美观且实用的倒计时实例代码
2015/12/30 Javascript
AngularJS入门教程之路由与多视图详解
2016/08/19 Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
2017/01/29 Javascript
ES6生成器用法实例分析
2017/04/10 Javascript
微信小程序使用picker实现时间和日期选择框功能【附源码下载】
2017/12/11 Javascript
javascript sort()对数组中的元素进行排序详解
2019/10/13 Javascript
vue实现吸顶、锚点和滚动高亮按钮效果
2019/10/21 Javascript
Vue router安装及使用方法解析
2020/12/02 Vue.js
Python抓取百度查询结果的方法
2015/07/08 Python
python中星号变量的几种特殊用法
2016/09/07 Python
Python实现的爬虫功能代码
2017/06/24 Python
Python实现简单的语音识别系统
2017/12/13 Python
python requests post多层字典的方法
2018/12/27 Python
Django1.11配合uni-app发起微信支付的实现
2019/10/12 Python
python3实现raspberry pi(树莓派)4驱小车控制程序
2020/02/12 Python
深入浅析python的第三方库pandas
2020/02/13 Python
pytorch实现保证每次运行使用的随机数都相同
2020/02/20 Python
python 在sql语句中使用%s,%d,%f说明
2020/06/06 Python
CSS3使用transition属性实现过渡效果
2018/04/18 HTML / CSS
html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
2013/01/09 HTML / CSS
柯基袜:Corgi Socks
2017/01/26 全球购物
启动一个线程是用run()还是start()
2016/12/25 面试题
新学期校长寄语
2014/01/18 职场文书
重阳节登山活动方案
2014/02/03 职场文书
爱岗敬业先进典型事迹材料(2016推荐版)
2016/02/26 职场文书
2016年幼儿园庆六一开幕词
2016/03/04 职场文书
OpenCV实现常见的四种图像几何变换
2022/04/01 Python