工作日志-面向对象编程

1.搜索连动事件

2.页面显示动作

3.没有数据返回需要一个空的无数据页面

4.事件触发,动态生成的元素绑定数据使用模板,在template中传入相应得到函数

1

2

3

4

5

6
var config = {

userId:'.../'

show:function() {

//这里添加方法

}

}
  • 如何解决移动端input输入值触发 拼音键入事件

    1
    
    2
    
    3
    
    4
    
    5
    
    6
    
    7
    
    8
    
    9
    
    10
    
    11
    
    12
    
    13
    
    14
    
    var cpLock = true;
    
    input.addEventListener('input',function(){
    
    //监听input的输入事件
    
    if(cpLock){
    
    //执行函数
    
    }
    
    })
    
    document.addEventListener('compositiononstart',function(){
    
    //开启中文
    
    cpLock = false;
    
    })
    
    document.addEventListener('compositiononend',function(){
    
    cpLock = true; 
    
    })
    
  • IScroll的移动问题
  1. 首先 iscroll有很多版本 普通版 prop版 无限版。。。
  2. new IScroll(‘.querySelector’)
  3. 固定样式
    1
    
    2
    
    3
    
    4
    
    div class = 'wrapper'
    
    div id = 'scroll'
    
    ul 
    
    --->   这是滑动得到元素  li
    
  4. 滑动原理
  • id = scroll 的高度需要超过 wrapper的高度才能滑动其中的元素 要不然不能滑动
  1. 只用prop版的IScroll才能监听到‘onscroll’事件
  2. 它会计算 id = scroll中每一的高度 来生成 maxScrollY 赋值给id 中的translateY
  3. IScroll中的new出的对象的方法
  • myScroll.scrollTo(x,y,time,easzing);
  • myScroll.slideDown
  • myScroll.refresh() –>在动态生成的元素加入到内部后 需要刷新已重新计算滑动高度

    让一个元素居中

  • flex布局
    • display:flex;justify-content:center; align-items:center;

页面写法

  • 一般先写一个function init() {}

    1. 先初始化头部配置 这是遗留问题 目前 需要减去 44px;
    2. 初始化内容高度app-content overflow-hidden 使他能在一页中显示
    3. 如果需要内容滑动的 直接在这里初始化iscroll中 滑动模块的高度.wrapper的高度
    4. 页面中其他元素以对象形式出现的需要重置
    5. 需要拿userInfo 拼接图片 另外getObjectFromSessition是异步的 需要一个回调函数
      getUserinfo(function(){
      1. 一般这里执行 loading()
        })

//初始化页面
init();

input输入框获取焦点问题

  • div 包裹一个input标签 里面一个delete标签
  • 点击delete标签时 input.val(‘’) 置空 input.focus() –>会有问题
  • 当点击div时会触发 input的focus()很bug

    iscroll 如果每次生成生成列表的时候 new IScroll iscroll的click事件为true 生成的click事件会叠加 在下次执行的时候多次执行

以面向对象的形式写网页

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118
var config = {

page:1,

node:$('.content'),

mask:$('.mask'),

_isShow:false,

data:{

"0001":"最新发布",

"0005":"车龄最短"

},

get isShow() {

return this._isShow;

},

set isShow(val) {

this._isShow = val; 

},

listen:{},

//利用对象监听  同一函数触发时的多个操作

addEvent:function(type,fn) {

if(typeof this.listen[type] == 'function' && Array.isArray(this.listen[type]))  {

this.listen[type].push(fn);

}else {

this.listen[type] = [];

this.listen[type].push(fn);

}

},

fireE:functon(type){

if(typeof this.listen[type] == 'function' && Array.isArray(this.listen[type]))  {

for(var i =0;i<this.listen[type].length;i++) {

this.listen[type][i]();

}

}

},

removeE:function(type,fn) {

if(typeof this.listen[type]) {

//循环type中 所有事件 删除原来的

for(var i = 0 ;i < this.listen[type].length;i++) {

if(this.listen[type][i] === fn) {

this.listen[type].splice(i,1);

}

}

}

},

//加入一些dom操作方法

showDelet:function() {

//显示删除按钮

}

refresh:function(data) {

this.data = [];

this.page = 1 ;

this.node.html('');

},

//定义模版

pushHtml:function() {

var page = this.page;

var template = _.template(this.temp.html(),{data:data,page:page,token:token,userId:userId})

},

//动态生成的元素再追加事件

setNode:function() {

this.node.html(val);

this.addListen(this.page)

},

addListen:function(page) {

$('[page=page'+page+']').off('click).on('click',function(){

var id = $(this).data('id');

})

myScroll.refresh();

},

}

var orderByList = {

list:$('.header'),

mask:$('.mask'),

select:$('.select'),

showSelect:function() {

this.list.hide();

this.list.mask();

this.select.show();

}

}

//封装方法

function loadData(putData,cb,caller) {

AladdingTools.request('post',AppInter..,putData,function(data){

if(data=='001') {

typeof cb === 'functionn' && cb();

}

})

}

function getSessionData(cb,called) {

AladdinTools.getObjectFromSession(config.searchKey,function(data){

cb&&typeof cb === 'function'&& cb.call(called,data);

})

}

function bindEvent() {

1.  设置左箭头返回键

2.  设置右箭头返回键

3.  其他

}

function load() {

myscroll的一些设置

}

function init() {

//定义页面高度

pageHeight = document.body.clientHeight - 44 ;

$('.app-content').height(pageHeight);

$('.iscroll-content').height(pageHeight - 50);

getUserInfo(function(){

load(funtion(){

bindEvent;

})

})

}

//get 和 set 的用法

get --> config.isShow; -->false;

set --> config.isShow = true;

调用  config.isShow  -->true;

下一篇:面试题

原文:大专栏  工作日志-面向对象编程

原文地址:https://www.cnblogs.com/wangziqiang123/p/11657530.html

时间: 2024-07-30 07:43:47

工作日志-面向对象编程的相关文章

面向对象编程思想 - 月亮晶石的日志 - 网易博客

面向对象是一种新兴的程序设计方法,或者说它是一种新的程序设计范型,其基本思想是使用对象,类,继承,封装,消息等基本概念来进行程序设计. 它是从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式,强调直接以问题域(现实世界)中的事物为中心来思考问题,认识问题,并根据这些事物的本质特点,把它们抽象地表示为系统中的对象,作为系统的基本构成单位(而不是用一些与现实世界中的事物相关比较远,并且没有对应关系的其它概念来构造系统).这可以使系统直接地映射问题域,保

C++ Primer 学习笔记_73_面向对象编程 --再谈文本查询示例

面向对象编程 --再谈文本查询示例 引言: 扩展第10.6节的文本查询应用程序,使我们的系统可以支持更复杂的查询. 为了说明问题,将用下面的简单小说来运行查询: Alice Emma has long flowing red hair. Her Daddy says when the wind blows through her hair, it looks almost alive, like a fiery bird in flight. A beautiful fiery bird, he

java面向对象编程— —第七章 继承

7.1继承的起源 继承(Inheritance),即在面向对象编程中,可以通过扩展(extends)一个已有的类,并继承该类的属性的行为,来创建一个新的类. 已有的类称为父类(也可以称为基类,超类),而新类称为子类(也可以称为派生类). 继承的优点:代码的可重用性:父类的属性和方法可用于子类:子类可以扩展父类的属性和方法:设计应用程序变得更加简单. 7.2 继承的使用原则 观察要使用的类,确定它们之间共同的和特有的属性和行为,将这些共性数据迁移到父类里,便于子类中进行方法和属性的重用. 对于不同

面向对象编程6大设计原则:单一职责原则

单一职责原则(Single  Responsibility Principle)简称SRP原则. 定义 应该有且仅有一个原因引起类的变更. 优点 可以降低类的复杂度,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单的多: 提高类的可读性,提高系统的可维护性: 变更引起的风险降低,变更是必然的,如果单一职责原则遵守的好,当修改一个功能时,可以显著降低对其他功能的影响. 说明 单一职责原则不只是面向对象编程思想所特有的,只要是模块化的程序设计,都适用单一职责原则: 单一职责原则要根据项目的实际情

JAVA学习(五):Java面向对象编程基础

Java面向对象编程基础 面向对象(Object oriented programming,OOP)技术是一种强有力的软件开发方法,它採用数据抽象与信息隐藏技术,来使软件开发简单化,以达到代码重用的目的. 1.OOP的3个特性(封装.继承和多态性) 封装是类的基础.指把类的相关实现细节隐藏起来,在类中将数据和实现操作的代码集中起来放在对象的内部.调用这些类时仅仅需直接使用类预留的接口就能够了. 继承提供了子类自己主动拥有父类数据结构和方法的机制.它表示类之间的一种关系. 多态指使一个对象被看成还

从一些简单代码实例彻底理解面向对象编程思想|OOP本质是什么?

从Rob Pike 的 Google+上的一个推看到了一篇叫<Understanding Object Oriented Programming>的文章,我先把这篇文章简述一下,然后再说说老牌黑客Rob Pike的评论. 先看这篇教程是怎么来讲述OOP的.它先给了下面这个问题,这个问题需要输出一段关于操作系统的文字:假设Unix很不错,Windows很差. 这个把下面这段代码描述成是Hacker Solution.(这帮人觉得下面这叫黑客?我估计这帮人真是没看过C语言的代码) 1 2 3 4

C++primer第十五章. 面向对象编程

面向对象编程基于三个基本概念:数据抽象.继承和动态绑定. 15.1. 面向对象编程:概述 面向对象编程的关键思想是多态性(polymorphism). 之所以称通过继承而相关联的类型为多态类型,是因为在许多情况下可以互换地使用派生类型或基类型的“许多形态”.正如我们将看到的,在 C++ 中,多态性仅用于通过继承而相关联的类型的引用或指针. 继承 派生类(derived class)能够继承基类(baseclass)定义的成员,派生类可以无须改变而使用那些与派生类型具体特性不相关的操作,派生类可以

C++ Primer 学习笔记_65_面向对象编程 --概述、定义基类和派生类

面向对象编程 --概述.定义基类和派生类 引言: 面向对象编程基于的三个基本概念:数据抽象.继承和动态绑定. 在C++中,用类进行数据抽象,用类派生从一个类继承另一个:派生类继承基类的成员.动态绑定使编译器能够在运行时决定是使用基类中定义的函数还是派生类中定义的函数. 继承和动态绑定在两个方面简化了我们的程序:[继承]能够容易地定义与其他类相似但又不相同的新类,[派生]能够更容易地编写忽略这些相似类型之间区别的程序. 面向对象编程:概述 面向对象编程的关键思想是多态性(polymorphism)

第11讲——面向对象编程

面向对象编程(OOP)的重要特性: 抽象 封装和数据隐藏 多态 继承 代码的可重用性 为了实现这些特性并将它们组合在一起,C++做出的最重要的改进--提供了类. 我们之前学的C语言时都是进行的过程性编程,而现在学的C++却是面向对象编程. 下面我们看一个例子,它揭示了OOP观点与过程性编程的差别. EDG垒球队的一名新成员被要求记录球队的统计数据.很自然,会求助于计算机来完成这项工作. 如果求助一位过程性程序员,他可能这样考虑: 我要输入每名选手的姓名.击球次数.击中次数.命中率(命中率指的是选