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 动态访问JSon元素示例代码
Aug 30 Javascript
jQuery处理xml格式的返回数据(实例解析)
Nov 28 Javascript
js解决弹窗问题实现班级跳转DIV示例
Jan 06 Javascript
AngularJS 实现弹性盒子布局的方法
Aug 30 Javascript
JS数组去重(4种方法)
Mar 27 Javascript
jQuery复合事件结合toggle()方法的用法示例
Jun 10 jQuery
vue中appear的用法
Aug 17 Javascript
webpack中的热刷新与热加载的区别
Apr 09 Javascript
详解vue+webpack+express中间件接口使用
Jul 17 Javascript
JS实现百度网盘任意文件强制下载功能
Aug 31 Javascript
JQuery实现折叠式菜单的详细代码
Jun 03 jQuery
何时使用Map来代替普通的JS对象
Apr 29 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
全国FM电台频率大全 - 22 重庆市
2020/03/11 无线电
php在文件指定行中写入代码的方法
2012/05/23 PHP
2个比较经典的PHP加密解密函数分享
2014/07/01 PHP
PHPStrom中实用的功能和快捷键大全
2015/09/23 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
2016/07/28 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
在线游戏大家来找茬II
2006/09/30 Javascript
Prototype使用指南之hash.js
2007/01/10 Javascript
基于Jquery的仿Windows Aero弹出窗(漂亮的关闭按钮)
2010/09/28 Javascript
文本框input聚焦失焦样式实现代码
2012/10/12 Javascript
JavaScript设计模式之代理模式介绍
2014/12/28 Javascript
jQuery遍历json中多个map的方法
2015/02/12 Javascript
通过node-mysql搭建Windows+Node.js+MySQL环境的教程
2016/03/01 Javascript
在Javascript操作JSON对象,增加 删除 修改的简单实现
2016/06/02 Javascript
微信小程序图片自适应支持多图实例详解
2017/06/21 Javascript
使用layui定义一个模块并使用的例子
2019/09/14 Javascript
.netcore+vue 实现压缩文件下载功能
2020/09/24 Javascript
[01:59]翻天覆地,因你而变,7.20版本地图更新速览
2018/11/24 DOTA
Python实现的检测网站挂马程序
2014/11/30 Python
Python排序搜索基本算法之希尔排序实例分析
2017/12/09 Python
python列表list保留顺序去重的实例
2018/12/14 Python
python gensim使用word2vec词向量处理中文语料的方法
2019/07/05 Python
用sleep间隔进行python反爬虫的实例讲解
2020/11/30 Python
python实现简单的井字棋游戏(gui界面)
2021/01/22 Python
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
草莓网化妆品加拿大网站:Strawberrynet Canada
2016/09/20 全球购物
美体小铺美国官网:The Body Shop美国
2017/11/10 全球购物
农药学硕士毕业生自荐信
2013/09/25 职场文书
党员学习十八大感想
2014/01/17 职场文书
公司授权委托书范本
2014/04/03 职场文书
《他得的红圈圈最多》教学反思
2014/04/24 职场文书
酒店开业策划方案
2014/06/02 职场文书
物理系毕业生自荐书
2014/06/13 职场文书
房屋维修协议书范本
2014/09/25 职场文书
写给老婆的保证书
2015/02/27 职场文书
先进个人自荐书
2015/03/06 职场文书