js面向对象的使用方法
标准用法:
function Sprite(){
//函数内容部设置属性
this.name='shimily';
}
//原型上设置方法
Sprite.prototype.show=function(){
console.log(this.name);
}
//【尽量不要在原型上面添加公共属性】
//公共的属性或常量可以在原型上面设置
Sprite.prototype.PI=3.1415926;
var s = new Sprite();
s.show();
改进用法:
改进用法一:*************************
function Sprite2(name,age){
//函数内容部设置属性
this.name=name;
this.age=age;
}
//原型上设置方法
Sprite2.prototype.show=function(){
console.log(this.name);
}
var s2 = new Sprite2('shimily1314',20);
s2.show();
改进方法二:*******************
function Sprite3(options){
//函数内容部设置属性
this.name=options.name;
this.age=options.age;
}
//原型上设置方法
Sprite3.prototype.show=function(){
console.log(this.name);
}
var s3 = new Sprite3({
name:'shimilygood',
age:20
});
s3.show();
最终常用方法:***************
function Sprite4(options){
//函数内容部设置属性
this._init(options);
}
Sprite4.prototype._init=function(options){
this.name=options.name;
this.age=options.age;
this.color=options.color;
}
//原型上设置方法
Sprite4.prototype.show=function(){
console.log(this.name);
}
var s4 = new Sprite4({
name:'shimilygood123',
age:20
});
s4.show();
【最好、最常用】
最终【优化版】常用方法:***************
function Sprite5(options){
//函数内容部设置属性
this._init(options);
}
Sprite5.prototype={
_init:function(options){ //只允许内部调用的方法【仅内部调用】
this.name=options.name;
this.age=options.age || 20;
this.color=options.color || 'red';
console.log(this.name);
},
show:function(ele){ //[可以不加参数]外部可以调用的方法不使用下划线
console.log(this.name + ele);
}
};
var s5 = new Sprite5({
name:'shimilygoodabc',
age:20
});
s5.show('yang');
王伟峰,图片轮播开发案例格式*******挺好用的
function Slider(container, opts){ //属性设置
this.$outer = $(container);
this.$inner = this.$outer.children();
this.$prev = $(opts.prev);
this.$next = $(opts.next);
this.$els = this.$inner.children();
this.total = this.$els.length;
this.w = this.$els.outerWidth(true);
this.timer = null;
this.isSliding = false;
this.autoplay = opts.autoplay || false;
this.init(); //对外接口
}
var proto = Slider.prototype; //原型中封装方法
proto.init = function(){
var self = this;
var $last = this.$els.eq(this.total-1);
if(this.total<6){
$last = this.$els.clone().appendTo(this.$inner).eq(this.total-1);
this.total *= 2;
}
$last.prependTo(this.$inner);
this.$inner.css('marginLeft', -this.w);
console.log(this.$next)
this.$prev.on('click', function(){
self.prev();
})
this.$next.on('click', function(){
self.next();
})
this.$outer.on('mouseenter', function(){
clearTimeout(self.timer);
})
this.$outer.on('mouseleave', function(){
self.auto();
})
this.auto();
}
proto.prev = function(){
if(this.isSliding) return;
this.isSliding = true;
var self = this;
this.$inner.animate({
marginLeft: 0
}, 500, function(){
self.$inner.children().eq(self.total-1).prependTo(self.$inner);
self.$inner.css('marginLeft', -self.w);
self.isSliding = false;
})
}
proto.next = function(){
if(this.isSliding) return;
this.isSliding = true;
var self = this;
this.$inner.animate({
marginLeft: -this.w*2
}, 500, function(){
self.$inner.children().eq(0).appendTo(self.$inner);
self.$inner.css('marginLeft', -self.w);
self.isSliding = false;
})
}
proto.auto = function(){
if(!this.autoplay) return;
var self = this;
function delay(){
self.timer = setTimeout(function(){
self.next();
delay();
}, 5000)
}
delay();
}
//实例化
new Slider('.slideOuter',{
prev: '.prev',
next: '.next',
autoplay: true
});
js面向对象的使用方法的更多相关文章
- js面向对象 多种创建对象方法小结
转自js面向对象 多种创建对象方法小结 1.对象字面量 var clock={ hour:12, minute:10, second:10, showTime:function(){ alert(th ...
- js面向对象的封装方法,【案例】
封装方法: /** * @矩形canvas库 * @authors Shimily (275766400@qq.com) * @date 2016-12-28 10:30:51 * @version ...
- JS面向对象(3) -- Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...
- js面向对象+一般方法的选项卡
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- js面向对象之公有、私有、静态属性和方法详解
现下,javascript大行其道,对于网站开发人员来说,javascript是必需掌据的一门语言,但随着jquery等框架的流行和使用,许多人对于原生javascript缺乏深入的理解,习惯了函数式 ...
- js面向对象自定义MyString()的构造器函数,实现内建String()属性和方法:
js面向对象自定义MyString()的构造器函数,实现内建String()属性和方法: var s = new MyString('hello'); s.length; s[0]; // " ...
- JS面向对象编程,对象,属性,方法。
document.write('<script type="text/javascript" src="http://api.map.baidu.com/api?v ...
- js面向对象初步探究(上) js面向对象的5种写方法
非常长一段时间看网上大神的JS代码特别吃力.那种面向对象的写法方式让人看得云里来雾里去.于是就研究了一下JS面向对象.因为是初学,就将自己在网上找到的资料整理一下,作为记忆. js面向对象的5种写方法 ...
- JavaScript---正则使用,日期Date的使用,Math的使用,JS面向对象(工厂模式,元模型创建对象,Object添加方法)
JavaScript---正则使用,日期Date的使用,Math的使用,JS面向对象(工厂模式,元模型创建对象,Object添加方法) 一丶正则的用法 创建正则对象: 方式一: var reg=new ...
随机推荐
- Lucky and Good Months by Gregorian Calendar - POJ3393模拟
Lucky and Good Months by Gregorian Calendar Time Limit: 1000MS Memory Limit: 65536K Description Have ...
- API Monitor v2.0 Alpha-r13 (32+64) 汉化版
API Monitor v2.0 Alpha-r13 (32+64) 汉化版: 链接: https://pan.baidu.com/s/1jIx5znC 密码: 4538 本软件已最大化汉化,已经趋于 ...
- js 练习
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="req_form.aspx.cs ...
- HDU5795A Simple Nim SG定理
A Simple Nim Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- 前言,学习ios编程(坚持)
其实,尝尝有人很疑惑,不知道自己要干嘛,看到很多的培训机构,不知道怎么选择但是又想进入软件行业.其实呢学习不一定要靠培训机构,一定要培训,特别是 当人家把自己吹的天花乱坠的时候,然并卵.出来之后,也只 ...
- Cheatsheet: 2016 05.01 ~ 05.31
Other Awesome Go - A curated list of awesome Go frameworks, libraries and software Visual Studio Cod ...
- [Python]简易terminal歌词滚动播放器
整合了网易云的一些API,想写一个terminal版的音乐播放器,但是还没有想好写成什么样子. 暂时写了一个必须又的功能:带歌词滚动的播放器,用了pygame里的mixer来播放音乐. 准备有时间的时 ...
- 微信iphone7、 ios10播放视频解决方案 2016.11.10
2016.11.10日更新以下方法 微信最新出同层播放规范 即使是官方的也无法解决所有android手机的问题. 另外iphone 5 .5s 某些手机始终会弹出播放,请继续采用 “以下是老的解决办法 ...
- C++学习注意点
1.cin,cout关同步再用,不然效率很糟cin,cout关同步再用,不然效率很糟cin,cout关同步再用,不然效率很糟.重要的事情说三遍.关同步代码:std::ios::sync_with_st ...
- Thread.join()方法
thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程.比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B.t.join() ...