`

javascript摘录

阅读更多
if (typeof(obj.property) != "undefined") {}

if (obj instanceof PredefinedObj) {}


语言的基础一定要打扎实!如:
各原始类型占用内存存储空间
各原始类型如何转化 
原始类型和对象类型存储的区别(没弄清楚咋用递归呢)

http://www.blogjava.net/zkjbeyond/archive/2006/05/19/47025.html
javascrpt语言预定义的属性不能用for in 得到。如toString


   ECMAScript认可两类对象,“Native Object”和“Host Object”,Host Object属于Native Object的子类,在(ECMA 262 3rd Ed Section 4.3)中叫"Built-in Object"(内置对象)。Native objects属于语言级别,host objects被环境提供(浏览器等),例如,document objects,DOM nodes等。

    关于对象属性的存取,数据类型,原型对象prototype的使用,我这就不译了。

http://www.blogjava.net/zkjbeyond/archive/2006/04/17/41531.html

对象:
http://www.iteye.com/topic/19748?page=3

变量:
http://zkj-beyond.iteye.com/blog/19506

prototype:
http://www.iteye.com/topic/53537

容易忽略的地方:
http://bbs.51js.com/thread-67208-1-1.html

prototype的继承讨论:
http://bbs.51js.com/viewthread.php?tid=67057&extra=&page=1



prototype 实现继承之注意点:
http://www.ajaxwing.com/index.php?id=2


prototype 实现继承之方式一:
http://kevlindev.com/tutorials/javascript/inheritance/index.htm

prototype 实现继承之方式二:

ext的继承片段
(和一的方式差不多,但是做了一些改进)
extend : function(){
            // inline overrides
            var io = function(o){
                for(var m in o){
                    this[m] = o[m];
                }
            };
            return function(sc, sp, overrides){
                var F = function(){}, scp, spp = sp.prototype;
                F.prototype = spp;
                scp = sc.prototype = new F();
                scp.constructor=sc;
                sc.superclass=spp;
                if(spp.constructor == Object.prototype.constructor){
                    spp.constructor=sp;
                }
                sc.override = function(o){
                    Ext.override(sc, o);
                };
                scp.override = io;
                Ext.override(sc, overrides);
                return sc;
            };
        }(),

        override : function(origclass, overrides){
            if(overrides){
                var p = origclass.prototype;
                for(var method in overrides){
                    p[method] = overrides[method];
                }
            }
        },


oop要实现的问题:

实例属性:
私有 在初始化方法中用var来声明就ok了。
公共 在初始化方法中使用this来声明就ok了。
为了效率,可以在prototype中实现。


静态属性:
公共 默认情况下就是公共的。
私有 可以一个私有属性绑定一个。

目前prototype实现的继承在上面四点上存在的问题是:
目前ext实现的继承在上面四点是存在的问题是:


使用prototype来实现只读属性(了解一下,好像没什么用,没必要搞这些技巧把问题搞复杂)
<script>
function Polygan()
{
	var m_points = [];

	m_points = Array.apply(m_points, arguments);

	function GETTER(){};
	GETTER.prototype = m_points[0];
	this.firstPoint = new GETTER();

	this.length = {
		valueOf : function(){return m_points.length},
		toString : function(){return m_points.length}
	}

	this.add = function(){
		m_points.push.apply(m_points, arguments);
	}

	this.getPoint = function(idx)
	{
		return m_points[idx];
	}
}
var p = new Polygan({x:1, y:2},{x:2, y:4},{x:2, y:6});
alert(p.length);
alert(p.firstPoint.x);
alert(p.firstPoint.y);
p.firstPoint.x = 100; //不小心写了它的值
alert(p.getPoint(0).x);  //不会影响到实际的私有成员
delete p.firstPoint.x; //恢复
alert(p.firstPoint.x);
</script>



另类prototype的使用:

<script>
function classA()
{
	this.a = 100;
	this.b = 200;
	this.c = 300;

	this.reset = function()
	{
		for(var each in this)
		{
			delete this[each];
		}
	}
}
classA.prototype = new classA();

var a = new classA();
alert(a.a);
a.a *= 2;
a.b *= 2;
a.c *= 2;
alert(a.a);
alert(a.b);
alert(a.c);
a.reset();
alert(a.a);
alert(a.b);
alert(a.c);
</script>



prototype继承中class type prototype三者之间的关系,js中prototype只能在元类级别修改,一旦function生成了对象,改对象对prototype是没有修改的权利的,当然元类级别还能做修改,且能立即反映到生成的对象上。


js的变量定义和函数定义:
http://www.coolcode.cn/andot/javascript-oop-inheritance-polymorphism/255


iframe  当用户点击后退按钮时会觉得奇怪,怎么没后退啦
        跨域时要注意sessionid urlencode
xmlhttp 跨域时麻烦

全面理解javascript的caller,callee,call,apply


call,apply改变函数执行的scope,第一个参数相同,其余参数不同


callee 属性的初始值就是正被执行的 Function 对象。

callee 属性是 arguments 对象的一个成员,它表示对函数对象本身的引用,这有利于匿名
函数的递归或者保证函数的封装性,例如下边示例的递归计算1到n的自然数之和。而该属性
仅当相关函数正在执行时才可用。还有需要注意的是callee拥有length属性,这个属性有时候
用于验证还是比较好的。arguments.length是实参长度,arguments.callee.length是
形参长度,由此可以判断调用时形参长度是否和实参长度一致。


String.substr(N1,N2) 这个就是我们常用的从指定的位置(N1)截取指定长度(N2)的字符串;
String.substring(N1,N2) 这个就是我们常用的从指定的位置(N1)到指定的位置(N2)的字符串;




   
分享到:
评论

相关推荐

    JavaScript Examples Bible - The Essential Companion to JavaScript Bible.pdf

    ### JavaScript Examples Bible - 关键知识点解析 #### 一、书籍概览 《JavaScript Examples Bible》是一...以上摘录展示了本书在JavaScript领域内的权威性和实用性。无论是初学者还是资深开发者,都能从中受益匪浅。

    [JavaScript.Visual.QuickStart.Guide(第8版)

    读者可以通过 permissions@peachpit.com 联系出版社获取重印和摘录的许可信息。 #### 三、免责声明 本书所提供的所有信息“按原样”提供,不附带任何形式的保证。尽管在准备本书时已经采取了所有可能的预防措施,...

    [JavaScript权威指南(第6版)].(JavaScript:The.Definitive.Guide).David.Flanagan.文字版.pdf

    由于提供的【部分内容】实际上是重复的文档信息,并没有提供真正意义上的内容摘录,因此无法根据这部分内容生成具体的知识点。不过,根据标题和描述,我们可以推断出《JavaScript权威指南(第6版)》这本书的知识点。...

    JavaScript

    “JavaScript is an important language because it is the language of the web browser. Its association with the browser makes it one of...摘录来自: Douglas Crockford. “[removed] The Good Parts。” iBooks.

    javascript完全自学手册

    请注意,文件中重复出现的网址“***”可能是手册中推荐的参考网站或资源,但在这一部分的摘录中,并未提供具体的信息。对于学习者而言,应当访问推荐的网站,寻找更多的资源来辅助学习。同时,由于文件内容的OCR扫描...

    编写可维护的JavaScript.((美)Nicholas C. Zakas).[PDF.pd

    在讨论《编写可维护的JavaScript》一书之前,需要明确几个核心的概念...由于正文中未提供具体的内容摘录,无法提供更深入的分析和讨论,但上述知识点应该为读者提供了一个关于如何编写可维护JavaScript代码的良好起点。

    Django JavaScript AJAX and jQuery使用教程

    这本书的标题《Django JavaScript AJAX and jQuery使用教程》透露了其核心内容,即向读者介绍如何在Django框架中集成JavaScript,特别是通过使用AJAX和jQuery这两个强大的工具来创建Web应用程序。AJAX(Asynchronous...

    history是一个JavaScript库可在任何JavaScript运行的任何位置轻松管理会话历史

    history 是一个JavaScript库,可让您在任何JavaScript运行的任何位置轻松管理会话历史。 历史将各种环境中的差异摘录出来,并提供最小化的API,让您可以管理历史堆栈,导航,确认导航以及在会话之间保持状态。

    hexo-excerpt:Hexo的自动摘录生成器

    自动摘录生成器 。 安装 $ npm install hexo-excerpt --save 此插件使用es6语法,请确保您的节点支持它。 特征 仍然有效! 如果您像我一样懒惰,则该插件会为您生成摘录,而不会破坏您的句子或代码! 如果未指定...

    JavaScript Source Map.epub

    “简单说,Source map就是一个信息文件,里面储存着位置信息。也就是说,转换后的代码的每一个位置,所对应的转换前的位置。 ...摘录来自: EpubPress. “JavaScript Source Map。” Apple Books.

    OpenLayers地图重点属性摘录

    ### OpenLayers地图重点属性摘录 #### 一、OpenLayers简介及版本标识 - **OpenLayers** 是一个开源JavaScript库,用于在Web浏览器中显示交互式地图。它提供了丰富的API来构建复杂的地理信息系统(GIS)应用。 - **...

    java设计模式源码-javascript-design-patterns02:《javascript设计模式》--张容铭(源码和学习总结)

    java 设计模式 源码 javascript-design-patterns02 《javascript设计模式》--张容铭(源码和学习总结) 参考资料:《javascript设计模式》--张容铭 内容主要包含本书的全部源码,并包含了书内知识点的摘录和总结

    vim-react-snippets:在React中开发有用的代码片段(Javascript和Typescript)

    此回购中的摘录依赖于作为摘录提供者。安装我建议使用软件包管理器,例如来安装您的vim软件包。 call plug#begin ( ' ~/.vim/plugged ' )Plug ' SirVer/ultisnips 'Plug ' mlaursen/vim-react-snippets 'call plug#...

    php自习摘录

    - JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 - 由于JSON数据格式易于JavaScript处理,因此常被用于前后端数据交互中。 综上所述,通过这个...

Global site tag (gtag.js) - Google Analytics