标签 知识 下的文章

Javascript 做个跳转界面

不算是成品,只是提供一个思路,学了location.repalce()发现是分分钟的事情。

演示

很简单的使用超时调用就搞定了。

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>You won't be able to get back here</title>
</head>
<body>
    <p>Enjoy this page for a second, because you won't be coming back here.</p>
    <script type="text/javascript">
        setTimeout(function() {
            location.replace("http://codesky.me");
        }, 1000);
    </script>
</body>
</html>

Javascript 截取字符串的三种方法比较

一共有三种方式截取字符串(不含根据传入参数截取成数组的split()方法)这里说的是子字符串,所以不说split()方法了。

slice(),substr(),substring()一共三种方法,其中各有不同,他们都可以传一个或两个参数进去,第一个参数都是起始位置,slice()substring()第二个参数为终止位置(输出到终止位置前一个字符),而substr为字符长度,但传入负数时情况又不一样了。

这里就负数来个实例:

var stringValue = "Hello World";
console.log(stringValue.slice(-3));
console.log(stringValue.substring(-3));
console.log(stringValue.substr(-3));
console.log(stringValue.slice(3, -4));
console.log(stringValue.substring(-4, 3));
console.log(stringValue.substring(3, -4));
console.log(stringValue.substr(3, -4));

输出:

rld
Hello World
rld
lo W
Hel
Hel

最后一个为空字符串,而substring吧负值转换为0,似乎就是从0到另一个参数的意思。slice()则中规中矩的负号表示倒过来数。

JavaScript BOM初体验-window.open

看了半天,终于到了我觉得实战的部分了,首先是window.open,说白了就是弹出窗口。
基础的来讲:

// 等同于 <a href="http://codesky.me" target="topFrame"></a>
window.open("http://codesky.me", "topFrame");

等价的时候用没什么前途,所以这里还有别的用法,topFrame,也就是第二个参数,可以传入_self,_parent,top以及_blank,而第二个参数并不是已存在的窗口和框架时,会去读取第三个参数来决定,第三个参数中似乎一些都是不怎么好用的,主要是top,width,left,height位置。

- 阅读剩余部分 -

Javascript 寄生组合式继承

接触了好几种继承模式了,在前一篇文章,我们就说到了一些继承方法,本以为组合是最好的,结果没想到还有。

故事从原型式继承说起:

function object(o) {
    function F(){}
    F.prototype = o;
    return new F();
}

var person = {
    name: "Nicholas",
    friends: ["Shelby", "Court", "Van"]
};

var anotherPerson = object(person);
anotherPerson.name = "Greg";
anotherPerson.friends.push("Rob");

var yetAnotherPerson = object(person);
yetAnotherPerson.name = "Linda";
yetAnotherPerson.friends.push("Barbie");

console.log(person.friends);

- 阅读剩余部分 -

Javascript call()与apply()

js中对于function,有callapply两种方法,在看书时前面没发现他们俩太大的作用,现在找到了一个实例,能说明apply的优点。

function SpecialArray() {
    var values = new Array();

    values.push.apply(values, arguments);

    values.toPipedString = function() {
        return this.join("|");
    };

    return values;
}

var colors = new SpecialArray("red", "blue", "green");
console.log(colors.toPipedString());

- 阅读剩余部分 -

Javascript for-in and forEach

起初在javascript中见到for-in的时候,误以为for-in就是PHP中的foreach(说实在的这些东西怎么用我都快要忘记了),结果发现是我想太多了,for-in怎么用,拿书上输出window的未免太多,看的也不确切,所以在看到面向对象之后自己写了一下。

- 阅读剩余部分 -

Javascript indexOf遍历查找所有子字符串出现的位置

好久没有更新了,六月份因为考试的缘故更是直接跳过了,前面浅浅的读了一下也不知道记些什么好,鉴于这个看着不错的样子就来mark一下。

indexOf()方法,可以从一个字符串中搜索给定的子字符串,和他相反的是lastIndexOf(),这个功能还算常见,正好码这段想到其他问题了,比如:

var stringValue = "Lorem ipsum dolor sit amet, consectetur adipisicing elit";
var positions = new Array();
var pos = stringValue.lastIndexOf("orem");

这段代码的运行结果如何呢,结果是1,而换成indexOf()结果也是1,然后我尝试了不同的测试,似乎所谓的返回子字符串的位置是从打头的字符位置而定的(如果没找到则返回-1)。

- 阅读剩余部分 -

SMU 算法题 情书的编码

题目:

截获了Bobwu的检讨以后,Linkinpaoger突然想到可以用自己的加密方式来加密情书。Linkinpaoger写了一封给Anonymous的情书并加密,然后发现密文中出现了很多类似ABBCCC的字符串。经过思索,Linkinpaoger决定按以下规则压缩密文:

1.任何包含k个相同字符的子串被替换为kX,X表示该子串中的唯一字符。

2.若某个这样的子串长度为1,那么省略‘1’。

按以上规则,ABBCCC将被压缩为A2B3C。现在请你帮Linkinpaoger压缩密文。

输入:

输入的第一行为一个正整数N,表示共有N组测试数据,接下来的每一行表示一组密文,密文仅由‘A'-’Z'组成。

1≤N≤100,每组密文的长度不超过10000个字符长度。

输出:

对于每组输入数据,输出一行压缩后的密文。

- 阅读剩余部分 -